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

标签 java unit-testing testing testng mockito

我正在为已经构建的 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/

相关文章:

java - 使用 Java 从 MS Server 2005 检索文件

java - 如何将文本文件资源读入 Java 单元测试?

ruby-on-rails - 如何测试数据库记录是否按id排序?

java - 迭代openCV java中的视频帧

java - 在 Java 中检查文件中的某个字符串

java - 使用 SpringMVC,未注入(inject) DaoImpl

node.js - 如何测试返回其元素包含 javascript Date 对象的对象数组的函数?

android - 如何在 Android 单元测试/Android 测试中测试文件 IO

node.js - 如何使用 ChainCode Mock Stub 测试 Node js 链码

rest - 无法根据内容类型 : application/x-www-form-urlencoded 的发布请求创建模拟