0
public class SupportController{

    public void disableUserAccount(String username) throws Exception {
        UserAccount userAccount = 
                new UserAccount(Constants.SYSTEM, Constants.CONTAINER, username);
        UserAccount.disableAccount();
    }
}

我将如何测试创建的用户帐户是否已禁用?

4

2 回答 2

1

基本解决方案有以下三种:

  1. 使用可以模拟的工厂类
  2. 使用可以模拟对构造函数的调用的PowerMock
  3. 更新类以使用可以在测试环境中覆盖的默认范围或受保护范围工厂方法。

PowerMock并不总是与其他跑步者(例如 SpringJUnit4TestRunner)配合得很好。由于这个原因以及它修改编译代码的事实,我通常会避免它。

可覆盖的工厂方法是另一种选择。为此,您必须扩展类并覆盖工厂方法。这意味着测试是针对被测类的实例运行的,该实例实际上不是被测类,而是可测试的子类。这对我有测试气味,所以我倾向于尽可能避免它。

工厂类方法是我的首选解决方案。传入默认创建的工厂类UserAccount。在您的测试Mockito中提供工厂的模拟(我使用)版本。

于 2013-07-31T16:31:26.800 回答
1

我建议使用Mock Objects

除此之外,您可以查看JUnit 常见问题解答,您可以在其中找到有关返回的测试方法的部分void

通常,如果一个方法没有返回值,它会产生一些副作用。实际上,如果它没有返回值并且没有副作用,那么它什么也没做。

可能有一种方法可以验证副作用是否按预期实际发生

于 2013-07-31T16:17:11.273 回答