通过testNG运行类时自动装配的替代方法是什么?

问题描述 投票:0回答:1

我正在验证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的任何内容的情况下解决此问题?

java testng
1个回答
0
投票
@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); } } }
© www.soinside.com 2019 - 2024. All rights reserved.