我正在为已经构建的 java 类函数编写测试。我正在使用 Testng 和 Mockito 编写测试,并且有一个数据提供程序。
这是我的测试
@Test(dataProvider = "myProvider", dataProviderClass = StaticDataProvider.class,
expectedExceptions = SomeException.class)
public void myControllerTest(String argument) throws Exception {
// Mocked object bussiness\
Boolean resultantObject = business.getList(argument);
Assert.assertTrue(resultantObject);
}
这是我要测试的 Controller
public Boolean controller(String argument) {
if(argument != null) {
throw new someException();
} else {
System.out.println("Sucess");
return true;
}
}
这是我的数据提供者
@DataProvider(name = "myProvider")
public static Object[][] getDirectoryList() throws Exception {
Object[][] result = null;
// case1 throws SomeException
String testData1 = null;
// case2 don't throw exception
String testData2 = "String";
result = new Object[][] { { testData1 }, { testData2 } };
return result;
}
我现在面临的问题是,我不想创建另一个测试来测试错误代码和非错误代码并使用单个测试用例完成我的测试覆盖。但是,当我将 Expected Exception 放在最上面时,它会在正确的代码上失败,而当我不这样做时,它会在有错误的代码上失败。
注意:这是示例代码,可能无法正常工作,这只是为了了解我正在处理的场景以及我的期望。
最佳答案
即使您忽略“一个测试,一个断言”的纯粹主义观点,我认为大多数人都同意您应该将涉及错误条件的测试与证明正常行为的测试分开。
如果你想在一个测试中测试多个错误条件(或者如果你真的热衷于继续你的计划),你可以使用这个模式:
try {
// something that should cause an exception
fail("Exception expected");
} catch (ExactlyTheRightException e) {
// ignored
}
关于java - 同时测试有异常和无异常的代码(JAVA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27561182/