java注释里没有test_关于java:JUnit @Test预期注释不起作用

我有以下测试:

@Test(expected = IllegalStateException.class)

public void testKey() {

int key = 1;

this.finder(key);

}

但是JUnit报告说,测试失败了,尽管它按预期方式抛出了IllegalStateException。

我是否需要配置其他内容才能运行此程序?

我现在用

@RunWith(Suite.class)

@SuiteClasses(Test.class)

public class TestSuite {

}

就像这个问题一样,但仍然没有得到理想的结果。

当我删除test前缀时,仍然出现错误。

我得说我是在Eclipse上运行这些测试,但它配置为使用JUnit 4 Runner。

也许您无意中使用JUnit 3运行了测试。测试类是否扩展了TestCase? 当您更改测试方法的名称以使其不再以test开头时,会发生什么?

当测试名称不以test开头时,我收到消息junit.framework.AssertionFailedError: No tests found in MyClass

是的,该类扩展了TestCase。

好了,那就清楚了-您正在混合使用JUnit 3和JUnit 4功能,这些功能将不起作用。 可以使用JUnit 3样式或JUnit 4样式编写测试。

问题是,嵌套测试的类是TestCase的扩展。由于这是JUnit 3样式,因此注释不起作用。

现在我的测试班是一个单独的班。

@RunWith(JUnit4.class)

public class MyTestCaseBase extends TestCase

在基础测试中扩展TestCase类时,@ Test(expected = ...)注释也存在问题。使用@RunWith(JUnit4.class)可以立即帮助(我承认这不是一个非常优雅的解决方案)

您不应该再使用JUnit4 +扩展TestCase。

我尝试了这一点,并按预期工作。

public class SampleClassTest {

@Test(expected = ArithmeticException.class )

public void lost(){

this.lost(0);

}

private void lost(int i) throws ArithmeticException {

System.out.println(3/i);

}

}

还请确保将junit4添加为依赖项,@(注释)是junit 4中的新功能。

我遇到了同样的问题,解决方案很简单:"不要扩展TestCase类"

不,这个JUnit测试应该可以正常工作-这边再也不需要了。

是什么让您确保测试抛出IllegalStateException?是否有可能将其包装到其他不同类型的异常中?

请从JUnit发布确切的失败消息。

正如@duffymo所建议的那样,很容易验证测试真正抛出的异常(如果有)。

JUnits消息:java.lang.IllegalStateException: ... MyErrorMessage ..

是的,有可能将异常包装到另一个包装中,但是在那种情况下,您应该声明包装器中的一个,而不要声明另一个包装器。

我遇到了同样的问题,只是更改了import语句。

我删除了 :

import org.junit.jupiter.api.Test;

import junit.framework.TestCase;

并添加:

import org.junit.Test;

它对我来说很好。

在我看来,这是正确的。

检查您的假设。您确定会引发异常吗?如果您说的是正确的,则从注释中删除期望的内容将使其失败。

我将与调试器一起逐步检查代码,以了解发生了什么。我假设您具有像IntelliJ这样的IDE。

刚刚在JUnit4下测试了此:此DO工作,测试成功完成。查看是否为Illegal Selector Exception等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值