我对mockito很陌生,只是想了解它是如何工作的。
我有一个方法想要测试。该方法实例化多个类以使用其方法。
e.g.
methodToTest{
class1 c1 = new class1();
class2 c2 = new class2();
class3 c4 = new class3();
c1.method1;
c2.method2;
c3.method3;
more logic
...
return result
}
我知道为了测试这个方法,我需要模拟这些类。这是否意味着我需要将其解耦并将每个类作为参数传递给该方法?
我想避免使用一个使用大量参数的方法,这些参数只有在模拟时才真正需要。
也许我错过了什么。
感谢您的见解。
我的标准解决方案是添加一个实例化该类的方法:
public ClassToTest {
methodToTest{
class1 c1 = newClass1();
...
}
class1 newClass1() {
return new Class1();
}
}
新方法是protected
或包私有,我只需在单元测试中覆盖它即可注入模拟:
@Test
public void testFoo() {
ClassToTest inst = new ClassToTest() {
class1 newClass1() {
return new Class1(); // <--- you can mock here
}
};
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)