如何使用构建器模拟内部变量

问题描述 投票:0回答:1

我正在编写单元测试并遇到构建器的问题:这是要测试的类:

public class ToBeTest() {
    public void enact(SomeInput input){
        Session s = Session.builder().attributeA(input.getA()).build();
        s.attributeB("someValue");
    }
}

如何编写测试以验证Session S是否设置了字段A和B?谢谢!

java unit-testing powermock powermockito
1个回答
0
投票

基本上你可以验证两件事:

  • input.getA():模拟你提供给你的代码的SomeInput实例,然后你可以在以后验证该模拟对象!
  • Session.builder()很可能是一个静态调用,因此使用静态模拟来提供一个模拟的构建器对象,您也可以在以后验证它。请参阅官方documentation了解执行此操作所需的步骤。

话虽如此:你真正的问题是你写的“难以测试代码”。惊喜,这使得很难测试。你看,首先有一个“方法本地”Sessions变量有什么意义。如果该方法将返回s,则可以检查它是否具有某些属性。或者如果s是该类的字段,那么您可以进行其他检查,以确保构建正确配置的Session。

简而言之:PowerMock(ito)提供了此代码所需的功能。阅读一些很好的教程,你不应该有太多问题。但是,还值得投资改进测试中的代码,以便更容易测试。我的经验法则是:当您需要PowerMock(ito)来测试代码时,您的生产代码应该得到改进。


推荐问答