我正在编写单元测试,并且遇到构建器问题: 这是要测试的课程:
public class ToBeTest() {
public void enact(SomeInput input){
Session s = Session.builder().attributeA(input.getA()).build();
s.attributeB("someValue");
}
}
如何编写测试以验证会话S是否成功设置了字段A和B?谢谢!
答案 0 :(得分:2)
基本上,您可以在以下两个方面进行验证:
input.getA()
:模拟您提供给被测代码的SomeInput
实例,然后可以稍后验证该模拟对象!Session.builder()
最有可能是静态调用,因此请使用 static 模拟提供模拟的构建器对象,您也可以在以后进行验证。请参阅官方documentation,了解执行此操作所需的步骤。已经说过:您的真正问题是您编写了“难以测试的代码”。惊喜,这使得测试变得困难。您会看到,首先放置“本地方法”的Sessions变量有什么意义。如果该方法将返回该s
,则可以检查它是否具有某些属性。或者,如果s
是该类的字段,则可以进行 other 检查,以确保构建了正确配置的Session。
长话短说:PowerMock(ito)提供了此代码所需的功能。阅读一些好的教程,您应该不会有太多问题。 但是值得的是,还应该投资改进被测代码以使其更易于测试。我的经验法则是:当您需要PowerMock(ito)来测试代码时,应该改进生产代码。