我正在验证ABCValidatorTest.java中的方法testValidateABC()
ABCValidatorTest.java
public class ABCValidatorTest {
@Test
public void testValidateABC() {
ABCValidator validator = new ABCValidator();
List<String> input = Arrays.asList("0", "1234", "abcd");
List<Boolean> expectedOutput = Arrays.asList(false, true, false);
boolean output;
for (int i = 0; i < input.size(); i++) {
if (StringUtils.isNotEmpty(input.get(i))) {
output = validator.validateABC(input.get(i));
} else {
output = false;
}
Assert.assertEquals((boolean) expectedOutput.get(i), output);
}
}
}
这里我正在创建一个ABCValidator的对象,下面是其类:
ABCValidator.java
public class ABCValidator {
@Autowired(required = false)
private ABCSearch abcRestClient;
public boolean validateABC(String abc_code) {
String response = abcRestClient.searchABCCodes(abc_code);
boolean hasValidabc = true;
if ((response.startsWith("null", 1)) || (response.equals("[]"))) {
hasValidabc = false;
}
return hasValidabc;
}
}
这里我已经自动连接ABCSearch以获得方法searchABCCodes()。
我在运行此命令时收到NullPointerException,因为abcRestClient未初始化。如何在不更改ABCValidator.java的任何内容的情况下解决此问题?
@RunWith(MockitoRunner.class)
public class ABCValidatorTest {
@Mock
private ABCSearch search;
@Test
public void testValidateABC() {
// Arrange
ABCValidator validator = new ABCValidator();
Whitebox.setInternalState(validator, "abcRestClient", search);
whhen(search.searchABCCodes("0").thenReturn("result");
whhen(search.searchABCCodes("1234").thenReturn("result");
whhen(search.searchABCCodes("abcd").thenReturn("result");
List<String> input = Arrays.asList("0", "1234", "abcd");
List<Boolean> expectedOutput = Arrays.asList(false, true, false);
boolean output;
// Act & Assert
for (int i = 0; i < input.size(); i++) {
if (StringUtils.isNotEmpty(input.get(i))) {
output = validator.validateABC(input.get(i));
} else {
output = false;
}
Assert.assertEquals((boolean) expectedOutput.get(i), output);
}
}
}