- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
有一个关于 junit 的 ExpectedException 规则的使用的问题:
如此处所建议:junit ExpectedException Rule从 junit 4.7 开始,可以像这样测试异常(这比 @Test(expected=Exception.class) 好得多):
@Rule
public ExpectedException exception = ExpectedException.none();
@Test
public void testFailuresOfClass() {
Foo foo = new Foo();
exception.expect(Exception.class);
foo.doStuff();
}
现在我需要在一个测试方法中测试多个异常,并在运行以下测试后得到一个绿色条,因此认为每个测试都通过了。
@Test
public void testFailuresOfClass() {
Foo foo = new Foo();
exception.expect(IndexOutOfBoundsException.class);
foo.doStuff();
//this is not tested anymore and if the first passes everything looks fine
exception.expect(NullPointerException.class);
foo.doStuff(null);
exception.expect(MyOwnException.class);
foo.doStuff(null,"");
exception.expect(DomainException.class);
foo.doOtherStuff();
}
但是过了一会儿我意识到测试方法在第一次检查通过后就退出了。这至少可以说是模棱两可的。在 junit 3 中,这很容易实现......所以这是我的问题:
如何使用 ExpectedException 规则在一个测试中测试多个异常?
最佳答案
简短的回答:你不能。
如果对 foo.doStuff()
的第一次调用抛出异常,您将永远无法到达 foo.doStuff(null)
。您必须将测试分成几个部分(对于这种微不足道的情况,我建议回到简单的表示法,不使用 ExpectedException
):
private Foo foo;
@Before
public void setUp() {
foo = new Foo();
}
@Test(expected = IndexOutOfBoundsException.class)
public void noArgsShouldFail() {
foo.doStuff();
}
@Test(expected = NullPointerException.class)
public void nullArgShouldFail() {
foo.doStuff(null);
}
@Test(expected = MyOwnException.class)
public void nullAndEmptyStringShouldFail() {
foo.doStuff(null,"");
}
@Test(expected = DomainException.class)
public void doOtherStuffShouldFail() {
foo.doOtherStuff();
}
如果你真的想要一个而且只有一个测试,如果没有抛出错误,你可以失败
,并捕获你期望的东西:
@Test
public void testFailuresOfClass() {
Foo foo = new Foo();
try {
foo.doStuff();
fail("doStuff() should not have succeeded");
} catch (IndexOutOfBoundsException expected) {
// This is what we want.
}
try {
foo.doStuff(null);
fail("doStuff(null) should not have succeeded");
} catch (NullPointerException expected) {
// This is what we want.
}
// etc for other failure modes
}
不过,这很快就会变得非常困惑,如果第一个预期失败,您将看不到其他任何东西是否也失败,这在进行故障排除时可能会很烦人。
关于java - 如何使用 ExpectedException 规则在一个测试中测试多个异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17722020/
我正在尝试验证我所有的异常都是正确的。因为值包装在 CompletableFutures 中,抛出的异常是 ExecutionException,原因是我通常会检查的异常。快速示例: void foo
我在使用 Visual Studio 单元测试框架时遇到了一个非常奇怪的情况。装饰为 [TestMethod, ExpectedException(typeof(InvalidOperationExc
我正在尝试在 C# UnitTest 中使用 ExpectedException 属性,但我在使用我的特定 Exception 时遇到问题>。这是我得到的: 注意:我用星号包裹了给我带来麻烦的行。
是否有 JUnit5 等效于 ExpectedException.expectCause() (JUnit4)? https://junit.org/junit4/javadoc/4.12/org/j
我正在尝试验证返回的异常和消息,但我在此消息中有一个可变的文件名。是否可以只用一种方法使用单元测试来做到这一点? public static string FileName {
我正在 Visual Studio 中进行一些单元测试: /// /// Padding14 should throw an ArgumentOutOfRangeException if strin
我有一个应该测试的方法: public void createNode(String name, String primaryNodeType, String[] mixinNodeTypes) th
我有一个类,用于映射通过 REST 从 json 对象传入的值。前端 javascript 正在制作传入的所有值字符串。如果我只需要字符串值,则使用 Spring 和 Jackson,一切正常。但是,
我在设置一些命令行脚本来测试我正在处理的项目的 NUnit 测试套件时开始遇到问题。 我注意到在 Visual Studio 中运行测试时或 Xamarin结果是我所期望的,但是当使用 nunit-c
我正在使用 NUnit 和 Rhino Mocks。我使用 AAA 语法并在设置方法中执行 Arrange 和 Act,每个测试方法都是一个断言。 [TestFixture] public class
如何在 MSTest 中放置多个 ExpectedExceptionin? 像这样的 [ExpectedException(typeof(ArgumentException))] [ExpectedE
我正在尝试为 InvalidArgumentException 测试我的类,但我得到了 Tests\BarTest::should_receive_parameter Missing argument
我正在尝试使用 JUnit 的 ExpectedExceptions。我已经试过了: public class ExpectedTest { @Rule public Expected
有一个关于 junit 的 ExpectedException 规则的使用的问题: 如此处所建议:junit ExpectedException Rule从 junit 4.7 开始,可以像这样测试异
在 junit 类中,我想测试是否抛出异常,如果没有,则提供一条解释性消息,提示在测试失败时要查找的内容。所以,像... thrown.expect(UnsupportedOperationE
我已经创建了一个类库。 我已经创建了单元测试项目来对一个类进行单元测试。 我上过一门特殊的课 " ExpectedExceptionAttribute Class " 我试图实现它。但是如果我启用
我想要一个 TestMethod 用于多个异常。问题是测试方法在第一次抛出异常后停止。 我知道我可以做这样的事情: try { sAbc.ToInteger(); Assert.Fail();
我有几个这种模式的单元测试: [TestMethod ()] [ExpectedException (typeof (ArgumentNullException))] public void DoSt
我认为这两个测试的行为应该相同,事实上我已经在我的项目中使用 MS Test 编写了测试,现在才发现它不像 NUnit 那样遵守预期的消息。 NUnit(失败): [Test, ExpectedExc
有人在 grails 单元测试中使用过这个注释吗? 似乎对我不起作用。 谢谢。 D 更新:我下面测试的最后一行确实抛出了预期的异常。但是测试失败(堆栈跟踪对于这里来说太大了......)。我正在使用
我是一名优秀的程序员,十分优秀!