我正在尝试为void方法创建一些单元测试。基本上,该方法旨在显示系统用户的角色并在软件中实现它。
这是方法:
public void setPersonObj(Person typeObj)
{
this.typeObj = typeObj;
createMain();
}
如何在单独的类中创建一个断言案例,该类使用单元测试来检查此方法?
非常感谢
答案 0 :(得分:1)
单元测试时基本上有两种不同的理念。
测试您所测试的类的状态。您通常运行要测试的方法,并检查被测试的类在运行后是否具有正确的状态,使用其上的getter或方法本身返回的值。在这种情况下,测试void方法可能有点困难,因为您可能不得不为测试添加getter,这会破坏封装。所以不要这样做。另一种方法是使用状态捕获存根类作为依赖项,但这可能很糟糕,因为存根本身包含一些未经测试的逻辑。
测试您所测试的类的行为。在运行您要测试的方法时,您可以在类的依赖项上设置期望值。这通常使用模拟框架来实现。在这种情况下,您基本上不关心您的方法是返回值还是无效。重要的是在依赖项上调用哪些方法,以及使用哪些参数。这就是你想要做的,一种更有效的测试方法(并且通常提供更好的覆盖)。一贯地使用这种测试方式也可以确保您的设计良好且适当的OO(迫使您进行依赖注入等)
答案 1 :(得分:0)
这取决于createMain()
方法的作用。例如,如果方法设置类中String字段的值,则单元测试应检查以确保String字段设置为正确的值。
您的单元测试还可以检查以确保typeObj
字段已设置(通过调用其相应的getter方法)。