单元测试和断言void方法的案例

时间:2011-11-22 16:28:27

标签: java unit-testing

我正在尝试为void方法创建一些单元测试。基本上,该方法旨在显示系统用户的角色并在软件中实现它。

这是方法:

public void setPersonObj(Person typeObj)
{
    this.typeObj = typeObj;
    createMain();
}

如何在单独的类中创建一个断言案例,该类使用单元测试来检查此方法?

非常感谢

2 个答案:

答案 0 :(得分:1)

单元测试时基本上有两种不同的理念。

  • 测试您所测试的类的状态。您通常运行要测试的方法,并检查被测试的类在运行后是否具有正确的状态,使用其上的getter或方法本身返回的值。在这种情况下,测试void方法可能有点困难,因为您可能不得不为测试添加getter,这会破坏封装。所以不要这样做。另一种方法是使用状态捕获存根类作为依赖项,但这可能很糟糕,因为存根本身包含一些未经测试的逻辑。

  • 测试您所测试的类的行为。在运行您要测试的方法时,您可以在类的依赖项上设置期望值。这通常使用模拟框架来实现。在这种情况下,您基本上不关心您的方法是返回值还是无效。重要的是在依赖项上调用哪些方法,以及使用哪些参数。这就是你想要做的,一种更有效的测试方法(并且通常提供更好的覆盖)。一贯地使用这种测试方式也可以确保您的设计良好且适当的OO(迫使您进行依赖注入等)

答案 1 :(得分:0)

这取决于createMain()方法的作用。例如,如果方法设置类中String字段的值,则单元测试应检查以确保String字段设置为正确的值。

您的单元测试还可以检查以确保typeObj字段已设置(通过调用其相应的getter方法)。