我正在尝试使用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.testedBean
是null
。
为什么对象在@Test
中按预期构造,而在@ParameterizedTest
中却不是?
1条答案
按热度按时间pkbketx91#
@RunWith(MockitoJUnitRunner.class)
不支持参数化测试。测试类必须附加注解,才能成功