有异常和无异常同时测试代码(JAVA)

有异常和无异常同时测试代码(JAVA),java,unit-testing,testing,testng,mockito,Java,Unit Testing,Testing,Testng,Mockito,我正在为已经构建的java类函数编写一个测试。我正在使用Testng和Mockito编写测试,并且有一个数据提供者 这是我的测试 @Test(dataProvider = "myProvider", dataProviderClass = StaticDataProvider.class, expectedExceptions = SomeException.class) public void myControllerTest(String argument) throws

我正在为已经构建的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);
}
这是我要测试的控制器

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;
}
这里我面临的问题是,我不想创建另一个测试来测试有缺陷和无缺陷的代码,并使用单个测试用例完成测试覆盖。但当我把预期的异常放在最上面时,它在正确的代码上失败,而当我不这样做时,它在错误代码上失败

注意:这是示例代码,可能不起作用,这只是为了了解我正在处理的场景和我的期望。

即使您忽略了“一个测试,一个断言”的纯粹主义观点,我想大多数人都同意您应该将涉及错误条件的测试与证明正常行为的测试分开

如果您想在一次测试中测试多个错误条件(或者如果您真的很想继续您的计划),您可以使用以下模式:

try {
  // something that should cause an exception
  fail("Exception expected");
} catch (ExactlyTheRightException e) {
  // ignored
}

不同的期望:不同的测试用例。难道没有任何方法可以一次性完成吗