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

use*_*187 7 java unit-testing

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

这是方法:

public void setPersonObj(Person typeObj)
{
    this.typeObj = typeObj;
    createMain();
}
Run Code Online (Sandbox Code Playgroud)

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

非常感谢

Tom*_*icz 13

如果方法void明显有一些副作用.否则它将是一个无操作.所以你别无选择,需要验证这些副作用.

如何测试这些副作用取决于您使用的技术和测试方法:

  • 如果该方法调用其他一些协作者/对象,则模拟它们并在之后验证模拟

  • 如果它改变了一些其他组件的状态(将元素添加到集合,修改字段)查询并断言它们

  • 如果它在磁盘/数据库上存储了某些东西,也可以查询它们

  • 如果它在Swing中显示一些窗口,你需要使用像Window Licker这样的Swing测试框架

  • 如果......您可以提供更多技术细节吗?

BTW执行一些额外无关逻辑的setter是代码气味.维护这些代码的人会发现很难弄清楚这个无辜setPersonObj()者除了......设置之外还会做些什么.

此外所有这些名字:Person,PersonObjtypeObj应保持一致,并与JavaBean规范的兼容性相同.