gpt4 book ai didi

java - 为什么 TestNG 允许几个预期的异常?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:19:34 25 4
gpt4 key购买 nike

为什么 TestNG 有可能检查是否抛出了几个异常?据我所知,JUnit 只支持一个 预期异常。考虑以下两个测试都将通过的 TestNG 虚拟示例:

@Test(expectedExceptions = { NullPointerException.class, IllegalArgumentException.class })
public void throwsNullPointer() {
throw new NullPointerException();
}

@Test(expectedExceptions = { NullPointerException.class, IllegalArgumentException.class })
public void throwsIllegalArgument() {
throw new IllegalArgumentException();
}

我最初的感觉是,应该可以从被测代码中准确得出预期的异常。但是,TestNG 背后的人员必须做出一些设计决策。

是否支持测试具有无法模拟的随机特性的代码?有没有人有想法,最好是现实生活中的场景?

最佳答案

Why does TestNG allow several expected exceptions?

我认为最有可能的原因是人们要求该功能......并且提供它是合理的。

我能想到几个用例。

  • 在为非确定性代码编写测试时可能需要它,并且非确定性会影响抛出的异常。

  • 在测试一个 API 的多个实现时可能需要它,这些实现可能对抛出的异常有不同的行为。实现可以是不同的类或同一类的不同版本。

  • 在测试依赖于第 3 方软件的代码时可能需要它,并且必须处理具有测试可见的不同行为的该软件的多个版本。

  • 在对接口(interface)规范不明确的 API 进行“黑盒”测试时可能需要它。


My initial feeling is that it should be possible to derive from the code under test exactly which exception that is expected.

假设您可以访问源代码。此外,使测试适应代码遗漏了您应该根据规范而不是代码进行测试的要点。

如果您可以选择允许多个异常,则可以避免这种情况。 (并且您没有此选项,那么您(测试编写者)必须捕获并测试测试用例中的异常......如果可能存在多个异常。)

关于java - 为什么 TestNG 允许几个预期的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30625951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com