如何在另一个类中模拟一个类junit mockito

时间:2016-05-09 11:47:13

标签: java unit-testing junit mockito

以下是定义为的两个类:

Class1{
   public method1
    {
        class2.getInstance().method2();
    }
}

Class2{
   public static getInstance() { .... }

   public method2() { .... }

   public Class3 obj = new Class3();
}

我需要为class1的method1编写junit测试。 但我需要知道如何模拟class2的getInstance()和method2()。

另外,请告诉我如何模拟Class3的对象。

3 个答案:

答案 0 :(得分:1)

如果您发现很难为您的课程编写一个好的测试,您应该重新设计您的课程以获得更好的可测试性,这也是TDD被称为测试驱动设计的原因。为简单的类编写测试应该永远不难。

然而,

答案 1 :(得分:0)

对于此任务(例如模拟new),您需要另一个框架。例如PowerMock

答案 2 :(得分:0)

那么男人,那些已经回答你的人是对的。

  

如果您发现很难为您的课程编写一个好的测试,您应该重新设计您的课程以获得更好的可测试性,这就是TDD也被称为测试驱动设计的原因。为简单的类编写测试应该不难。

     

然而,

     

如何模拟静态方法这里描述PowerMockito模拟单个静态方法和返回对象(感谢Jorge)   这里已经描述了如何部分模拟一个类:如何从Junit模拟内部方法的调用

我可以添加以下内容:

如果你有充分的理由去做你想做的事情,我会给你进一步的建议:

您可以使用powermock库的Whitebox.setInternalState()方法来模拟Class3的对象。

Whitebox.setInternalState(class2, "obj", class3Mock);
相关问题