如何以惯用方式使用JUnit4来测试某些代码是否会抛出异常?
虽然我当然可以这样做:
@Test
public void testFooThrowsIndexOutOfBoundsException() {
boolean thrown = false;
try {
foo.doStuff();
} catch (IndexOutOfBoundsException e) {
thrown = true;
}
assertTrue(thrown);
}
Run Code Online (Sandbox Code Playgroud)
我记得有一个注释或一个Assert.xyz或者其他东西,对于这些类型的情况来说,远不如KUndgy 和JUnit的精神.
我一直在阅读一些源代码,在一些地方我已经看到了它的用法assert.
这究竟是什么意思?它的用途是什么?
如何使用Assert(或其他Test类?)来验证是否抛出了异常?
我正在使用GCC编译器在Linux上工作.当我的C++程序崩溃时,我希望它能自动生成一个堆栈跟踪.
我的程序由许多不同的用户运行,它也可以在Linux,Windows和Macintosh上运行(所有版本都使用编译gcc).
我希望我的程序能够在崩溃时生成堆栈跟踪,并且在用户下次运行它时,它会询问他们是否可以将堆栈跟踪发送给我,以便我可以追踪问题.我可以处理向我发送信息,但我不知道如何生成跟踪字符串.有任何想法吗?
assert作为标准代码的一部分使用而不是仅仅用于调试目的,是否存在性能或代码维护问题?
是
assert x >= 0, 'x is less than zero'
Run Code Online (Sandbox Code Playgroud)
好或坏比
if x < 0:
raise Exception, 'x is less than zero'
Run Code Online (Sandbox Code Playgroud)另外,有没有办法设置业务规则if x < 0 raise error,总是在没有try/except/finally这样的情况下进行检查,如果在整个代码中的任何时候x小于0都会引发错误,就像你assert x < 0在函数的开头设置一样,在函数内的任何地方哪里x变得少于0则引发异常?
这是我通常做的,以确定输入是list/ tuple- 而不是a str.因为很多次我偶然发现函数str错误地传递了一个对象的bug ,而目标函数确实for x in lst假设它lst实际上是一个list或者tuple.
assert isinstance(lst, (list, tuple))
Run Code Online (Sandbox Code Playgroud)
我的问题是:有没有更好的方法来实现这一目标?
有人知道为什么JUnit 4提供assertEquals(foo,bar)但不提供assertNotEqual(foo,bar)方法吗?
它提供assertNotSame(对应assertSame)和assertFalse(对应assertTrue),所以看起来很奇怪他们没有打扰包括assertNotEqual.
顺便说一句,我知道JUnit-addons提供了我正在寻找的方法.我只是出于好奇而问.
有没有人知道是否有一个assert或类似的东西可以测试是否在被测试的代码中抛出异常?
assertJavaScript 中的含义是什么?
我见过类似的东西:
assert(function1() && function2() && function3(), "some text");
Run Code Online (Sandbox Code Playgroud)
并想知道该方法的assert()作用.
JUnit框架包含2个Assert类(显然在不同的包中),并且每个类的方法看起来非常相似.任何人都可以解释为什么会这样吗?
我所指的课程是:junit.framework.Assert和org.junit.Assert.