Mockito, @InjectMocks comportamento estranho com campos finais
Estou vendo um comportamento que acredito ser um erro. @InjectMocks não parece criar um novo assunto de teste antes de cada método de teste. Onde como @Mock faz. No exemplo a seguir, se Subject.section for final, @Test falhará. Se não é final, ambos passam. Minha solução atual é usar @BeforeClass, mas isso não é ideal.
Subject.java:
package inject_mocks_test;
public class Subject {
private final Section section;
public Subject(Section section) {
this.section = section;
}
public Section getSection() {
return section;
}
}
Seção.java:
package inject_mocks_test;
public class Section {}
SubjectTest.java
package inject_mocks_test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import static org.testng.Assert.assertEquals;
public class SubjectTest {
@Mock
Section section;
@InjectMocks
Subject subject;
@BeforeMethod
public void setup() {
MockitoAnnotations.initMocks(this);
}
@Test
public void test1() {
assertEquals(section, subject.getSection());
}
@Test
public void test2() {
assertEquals(section, subject.getSection());
}
}
Felicidades.