2012-04-20 9 views
5

Tengo dos clases de prueba, MyFirstTest y MySecondTest. Ejecutar cada uno independientemente funciona bien. Cuando ejecuto ambos (en eclipse, selecciono la carpeta de prueba que contiene estos archivos, hago clic con el botón derecho, me muevo como junit), MySecondTest falla porque MyClass todavía se burla cuando ejecuta sus 'pruebas. MyFirstTest requiere que MyClass sea burlado. MySecondTest requiere que MyClass no se burle. Pensé que se suponía que TearDownMocks 'demock' las clases.MyClass se burla entre dos pruebas

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

'Bueno, encontré que agregar Mockit.tearDownMocks(); a MySecondTest clases setUp (que está anotado con el método Before), reinicia simulacros para que no use el simulacro de la clase anterior. No estoy seguro de por qué las invocaciones de Mockit.tearDownMocks (MockMyClass.class) desde dentro de los métodos anotados con After y AfterClass se están cayendo ... ' – user1346730

Respuesta

3

El método Mockit.tearDownMocks() acepta clases reales y no los burla de. Por lo tanto, el código correcto sería:

Mockit.tearDownMocks(MyClass.class); 
+2

Esta característica está en desuso. Ahora debe llamar a '.tearDown' en la clase simulada. Además, en JUnit esto debe hacerse entre pruebas automáticamente – keaplogik

1

La forma correcta de hacerlo es como se menciona a continuación: burlarse de la clase y asignarlo a una variable. Y luego, usando esa variable, puedes destruir o borrar el simulacro para que no afecte a ningún otro caso de prueba.

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