- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个方法,在特定的处理点期间,它期望保留某些不变量。
为了保持这种微不足道,假设在代码处理过程中的 X 点,变量 high
和变量 low
必须是可整除的。
所以在我的代码中:
if(high % low != 0){
throw new AssertionError("Invalid state of low and high [low = "+ low+ ", high=" + high+"]");
}
在使用 JUnits
进行单元测试期间,我有一个测试用例来对此进行测试。
所以我做了:
try {
//At this point I know for sure that the low and high are not divible so process() should throw an Assertion Error
process();
fail();
}
catch(AssertionError e){
}
但是测试用例是绿色的!
但我意识到 junit 由于 fail
引发了断言错误,但我捕获了它,结果测试用例通过而不是失败。
从我的角度来看,在我的代码中引发的正确错误也是 AssertionError
而不是一些通用的错误,例如IllegalArgumentsException
那么有没有办法解决这个问题,以便测试用例正常工作,或者我不应该首先在我的代码中使用 AssertionError
?如果是这种情况,我应该提出什么异常(exception)?
最佳答案
单元测试中不应该有 try-catch
block 。如果您希望出现异常,请使用注释:
@Test(expected=Exception.class)
public void youTestMethod() {
...
}
您必须使用不同的异常,例如 IllegalArgumentsException
,因为 JUnit 在内部使用 AssertionError
。我发现 IllegalArgumentsException
更能描述实际出错的地方。
关于java - 如果我想使用 JUnit,是否禁止使用 AssertionErrors?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10462565/
使用登录后,我想吐出用户名。 但是,当我尝试单击登录按钮时, 它给了我力量。 我看着logcat,但是什么也没显示。 这种编码是在说。 它将根据我在登录屏幕中输入的名称来烘烤用户名。 不会有任何密码。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我是一名优秀的程序员,十分优秀!