我们说我有以下代码:
protected int returnFourtyTwo() {
evilMethod(new Object, "");
return 42;
}
protected static void evilMethod(Object obj, String string) {
throw new RuntimeException("This is me being evil.");
}
我尝试做的是运行我的returnFourtyTwo()方法,而不会在单元测试中抛出运行时异常。我之前能够使用suppress()方法绕过类构造函数,但这是我第一次不得不绕过静态方法(带有多个参数)静态类。不幸的是,关于这个主题的资源有点稀缺。
答案 0 :(得分:1)
唯一的出路是模拟静态方法,如@Dave所述。你可以用PowerMock做到这一点。
答案 1 :(得分:0)
根据实际方法实现的复杂程度,您可以将返回调用与异常抛出分开 - 然后在不会抛出异常的返回调用上进行测试。在很多情况下,如果像42
这样的奇怪的整体有自己的变量来解释它对应的东西也是最好的 - 如果总是 42,那么它是静态的最后。
这就是我在这里针对你的具体情况做的事情,但我猜这是你实际问题的一个主要简单抽象,所以你可能仍然想按照之前的建议去模拟它。
static final int theAnswerToLife = 42;
protected int returnFourtyTwo() {
evilMethod(new Object, "");
return getTheAnswerToLife();
}
protected int getTheAnswerToLife() {
return theAnswerToLife;
}
protected static void evilMethod(Object obj, String string) {
throw new RuntimeException("This is me being evil.");
}
答案 2 :(得分:-2)
简单来说,您可以将@Ignore注释用于您的方法。