2012-04-20 12 views
5

Mam dwie klasy testowe, MyFirstTest i MySecondTest. Uruchamianie każdego niezależnie działa dobrze. Kiedy uruchamiam oba (w eclipse wybierz folder testowy, który zawiera te pliki, kliknij prawym przyciskiem, uruchom jako junit), MySecondTest nie powiedzie się, ponieważ MyClass wciąż jest wyśmiewany, gdy uruchamia swoje "testy. MyFirstTest wymaga kpiny z MyClass. MySecondTest wymaga, aby MyClass nie był kpiony. Myślałem, że tearDownMocks ma "zdjąć" klasy.MyClass pozostaje wyśmiewany między dwoma testami

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 { 
+1

"Cóż, stwierdziłem, że dodanie Mockit.tearDownMocks(); do klas MySecondTest metoda setUp (która jest opatrzona adnotacją Before), resetuje makiety, aby nie używać makiety z poprzedniej klasy. Nie wiesz, dlaczego wywołania metody Mockit.tearDownMocks (MockMyClass.class) z metod oznaczonych klauzulą ​​After i AfterClass polegają ... " – user1346730

Odpowiedz

3

Metoda Mockit.tearDownMocks() akceptuje prawdziwe klasy, a nie makiety. Tak więc, prawo kod byłoby:

Mockit.tearDownMocks(MyClass.class); 
+2

Ta funkcja jest nieaktualna. Musisz teraz wywołać '.tearDown' na fałszywej klasie. Ponadto w JUnit należy to zrobić automatycznie między testami – keaplogik

1

Prawo sposobem na to jest jak wymienione poniżej: Mock klasy i przypisać ją do zmiennej. A następnie, używając tej zmiennej, możesz zniszczyć lub usunąć próbę, aby nie wpłynęła ona na żadne inne przypadki testowe.

MockUp<PmRequestData> mockpmreq = new MockUp<PmRequestData>() { 
     @Mock 
     public Map<String, KPIData> getKpiDataMap() { 
      return datamap; 
      } 
     }; 
mockpmreq.tearDown(); 
Powiązane problemy