gpt4 book ai didi

java - 解释一下这个fail()方法在这个junit测试中做了什么

转载 作者:行者123 更新时间:2023-12-02 03:00:00 25 4
gpt4 key购买 nike

我在理解 JUnit 测试的 fail() 方法在实践中遇到了一些困难。我上网查了一下,从 junit 网站上看到了失败(java.lang.String message)“给定消息的测试失败”。在我正在查看的 JUnit 测试中,代码如下:

@Test (expected = RuntimeException.class)
public void testBadCombine(){
AvocadoPortion ap1 = new AvocadoPortion(amount1);
AvocadoPortion ap2 = new AvocadoPortion(amount2);
IngredientPortion ap3 = ap1.combine(ap2);
CrabPortion cp1= new CrabPortion(2);

ap1.combine(cp1);
fail("Expected RuntimeException to be thrown");
}

有人可以解释一下 (expected = RuntimeException.class) 的作用吗?

如果抛出 RuntimeException,是否会执行 failed("Expected RuntimeException to be throw");行没有被执行,使 JUnit 测试成功?

为什么是ap.1combine(cp1);行不在 try 和 catch block 下? (什么时候需要使用 try 和 catch block ?)

如你所见,我很困惑,需要一些澄清

最佳答案

使测试代码更加清晰的合理选项:

A) 只需使用预期

@Test (expected = RuntimeException.class)
public void testBadCombine(){
AvocadoPortion ap1 = new AvocadoPortion(amount1);
AvocadoPortion ap2 = new AvocadoPortion(amount2);
IngredientPortion ap3 = ap1.combine(ap2);
CrabPortion cp1= new CrabPortion(2);
ap1.combine(cp1);

}

B)如果需要,对您的异常进行一些特定的测试...

@Test
public void testBadCombine(){
AvocadoPortion ap1 = new AvocadoPortion(amount1);
AvocadoPortion ap2 = new AvocadoPortion(amount2);
IngredientPortion ap3 = ap1.combine(ap2);
CrabPortion cp1= new CrabPortion(2);
try {
ap1.combine(cp1);
fail("should have thrown");
} catch (TheExactExceptionYouExpect e) {
assertThat(e.getSomeProperty(), is(whatever));
}
}

您更喜欢选项“A)” - 当实际上您想要断言被测试代码抛出的异常的某些属性时,您只会转向“B”)。

关于java - 解释一下这个fail()方法在这个junit测试中做了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42494555/

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