运行 JUnit 测试时是否有任何方法可以替换私有方法中的逻辑?
一些背景知识:我们有一些与 OSGi 容器内的包交互的私有方法。这在单元测试中不可用,因此该方法将失败。
我们已经研究过 JMockIt,但方法替换功能似乎想要强制您替换类中相互调用的所有方法。
实现会是这样的:
public final doSomething() {
firstThing();
secondThing();
}
private firstThing() {
// normal code
}
private secondThing() {
// code which is unavailable in a unit test
}
单元测试将指定 secondaryThing() 的新实现:
// replace secondThing() in impl with this secondThing()
private secondThing() {
// dummy code
}
// run tests
你当然可以用JMockit解决这种情况。
一种方法是定义一个“模型”类,例如:
public class MyTest
{
@Test
public void testDoSomething()
{
new MockUp<ClassWhichDependsOnOtherBundles>()
{
@Mock
void secondThing()
{
// do anything here
}
};
new ClassWhichDependsOnOtherBundles().doSomething();
}
}
只有secondThing()
模拟类中的方法将被 JMockit 替换。
还可以使用 JMockit Expectations API 进行部分模拟。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)