小编use*_*457的帖子

Mockito,@ InjectMocks与最终字段的奇怪行为

我看到的行为我认为是一个错误.@InjectMocks似乎在每个测试方法之前都没有创建新的测试主题.@Mock的地方.在以下示例中,如果Subject.section是最终的,则@Test失败.如果它不是最后都通过.我目前的解决方法是使用@BeforeClass,但这并不理想.

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

Section.java:

package inject_mocks_test;

public class Section {}
Run Code Online (Sandbox Code Playgroud)

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() …
Run Code Online (Sandbox Code Playgroud)

java testng mockito

11
推荐指数
1
解决办法
5150
查看次数

标签 统计

java ×1

mockito ×1

testng ×1