MyClass在两次测试之间保持嘲笑

时间:2012-04-20 13:56:50

标签: java jmockit

我有两个测试类,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 {

2 个答案:

答案 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();