Mockito,@InjectMocks最终字段的奇怪行为
我看到的行为我认为是一个错误。@InjectMocks似乎并没有在每个测试方法之前创建一个新的测试对象。@Mock在哪里。在下面的示例中,如果 Subject.section 是最后一个,则@Test失败。如果不是最终的,两者都通过。我目前的解决方法是使用@BeforeClass,但这并不理想。
主题.java:
package inject_mocks_test;
public class Subject {
private final Section section;
public Subject(Section section) {
this.section = section;
}
public Section getSection() {
return section;
}
}
部分.java:
package inject_mocks_test;
public class Section {}
科目测试.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());
}
}
干杯。