Mockito, @InjectMocks dziwne zachowanie na końcowych polach
Widzę zachowanie, które uważam za błąd. @InjectMocks nie wydaje się tworzyć nowego obiektu testowego przed każdą metodą testową. Gdzie jest @Mock. W poniższym przykładzie, jeśli Subject.section jest końcowy, jeden test @ kończy się niepowodzeniem. Jeśli nie jest to ostatnia, to oba. Moje obecne obejście to użycie @BeforeClass, ale to nie jest idealne.
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;
}
}
Section.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());
}
}
Twoje zdrowie.