使用JUnit测试类 -
有一个班级TestAccess.java
static private TestAccess instance = new TestAccess();
public static TestAccess getTestAccess() {
returns instance;
}
用于测试测试类A.java
使用JMockit来模拟getTestAccess
方法
@Mock
TestAccess mockTestaccess;
@Test
public void testMethod() {
new MockUp<TestAccess>() {
@mockit.Mock
public TestAccess getTestAccess() {
return mockTestaccess;
}
};
TestAccess test=TestAccess.getTestAccess();
}
在另一个课程B.java
中,我不想使用模拟和通话
TestAccess.java
如下
@Test
public void doTest()
{
TestAccess test=TestAccess.getTestAccess();
}
B.java
如果独立运行,则返回真实的TestAccess
实例并且正常工作。
然而,在maven运行期间,它甚至在B.java
中失败了
TestAccess.getTestAccess()
返回A.java
中定义的模拟,而不是预期的实例。
任何人都可以指导如何解决这个问题。
答案 0 :(得分:1)
afair您的示例甚至不会运行,因为mockTestaccess字段上的@Mock
注释无效。我想它应该是@Mocked
?如果是这样,则无需另外使用new MockUp()
,因为@Mocked
上的mockTestaccess
已经在该测试类的测试期间模拟了TestAccess
的所有实例之后将自动恢复。如果你有问题,getTestAccess()
返回TestAccess
的某个子类,然后它不是一个模拟的实例,你可能想看看@Capturing
,它也会模拟子类的实例。