mockito @InjectMocks,对象在@Test中示例化,但在@ParameterizedTest中为null

ipakzgxi  于 9个月前  发布在  其他
关注(0)|答案(1)|浏览(81)

我正在尝试使用mockito(5.3.1版)和junit(4.13.2版)对一个类进行单元测试。测试类注解为@RunWith(MockitoJUnitRunner.class),测试对象为

@InjectMocks
    TestedBean testedBean;

并且它的所有依赖性都用@Mock注解。这种方法已经可以正确地用于一些测试方法,这些方法都使用@Test进行了注解。
现在考虑这两种测试方法:

@Test
    public void test1() {
        String value = "value";
        String filter = "val";
        boolean expectedResult = true;

        // when
        var result = testedBean.testedMethod(value, filter, null);

        // then
        assertThat(result, is(expectedResult));
    }

    @CsvSource({
            "value, val, true"
    })
    @ParameterizedTest
    public void test2(String value, String filter, boolean expectedResult) {

        // when
        var result = testedBean.testedMethod(value, filter, null);

        // then
        assertThat(result, is(expectedResult));
    }

@Test注解的测试正确通过,而@ParameterizedTest抛出NullPointerException,因为this.testedBeannull
为什么对象在@Test中按预期构造,而在@ParameterizedTest中却不是?

pkbketx9

pkbketx91#

@RunWith(MockitoJUnitRunner.class)不支持参数化测试。测试类必须附加注解,

@ExtendWith(MockitoExtension.class)

才能成功

相关问题