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

use*_*730 7 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 {
Run Code Online (Sandbox Code Playgroud)

Gau*_*nga 3

正确的方法如下所述:模拟类并将其分配给变量。然后,使用该变量,您可以销毁或清除模拟,以便它不会影响任何其他测试用例。

MockUp<PmRequestData> mockpmreq = new MockUp<PmRequestData>() {
        @Mock
        public Map<String, KPIData> getKpiDataMap() {
            return datamap;
            }
        };
mockpmreq.tearDown();
Run Code Online (Sandbox Code Playgroud)