我有两个测试类,MyFirstTest和MySecondTest。独立运行每个工作正常。当我同时运行时(在eclipse中选择包含这些文件的测试文件夹,右键单击,以junit运行),MySecondTest失败,因为MyClass在运行其测试时仍然被模拟。 MyFirstTest需要模拟MyClass。 MySecondTest要求MyClass不被嘲笑。我认为tearDownMocks假设要“移除”这些类。
public class MyFirstTest {
@Before
public void setUp() throws Exception {
Mockit.setUpMocks(MockMyClass.class);
}
@After
public void tearDown() throws Exception {
Mockit.tearDownMocks(MockMyClass.class);
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
Mockit.tearDownMocks(MockMyClass.class);
}
@MockClass(realClass = MyClass.class, stubs = "<clinit>")
public static class MockMyClass {
...
public class MySecondTest {
答案 0 :(得分:3)
Mockit.tearDownMocks()
方法接受真正的类而不是模拟。所以,正确的代码是:
Mockit.tearDownMocks(MyClass.class);
答案 1 :(得分:1)
正确的方法如下所述:模拟类并将其分配给变量。然后,使用该变量,您可以销毁或清除模拟,以便它不会影响任何其他测试用例。
MockUp<PmRequestData> mockpmreq = new MockUp<PmRequestData>() {
@Mock
public Map<String, KPIData> getKpiDataMap() {
return datamap;
}
};
mockpmreq.tearDown();