"no runnable methods" Junit 上的自定义注释和过滤的所有测试



我使用JUnit 4.11,扩展了BlockJUnit4ClassRunner并使用了自定义注释。如果注释带有某个参数,则测试将不会运行。

这工作得很好,除了一种情况,类中的所有测试都被过滤掉了,除了自定义测试运行器。

基本上与这篇文章中描述的完全相同:根据自定义java注释,JUnit4跳过测试

我尝试了这篇文章中提到的变通方法:JUnit:如何避免"没有可运行的方法";在测试utils类

如果我引入一个虚拟测试,那么至少有一个测试会一直运行,一切都很好。如果所有的测试都没有运行,因为它们都有注释,我将得到"No runnable methods"异常。

我可以接受这个变通方法,但应该有更好的方法。我很感谢任何指示或解释我做错了什么或如何改善这种情况。

由于在validateInstanceMethods中执行验证,因为computeTestMethods()返回一个空列表,因此您得到此错误:

protected void validateInstanceMethods(List<Throwable> errors) {
        validatePublicVoidNoArgMethods(After.class, false, errors);
        validatePublicVoidNoArgMethods(Before.class, false, errors);
        validateTestMethods(errors);
        if (computeTestMethods().size() == 0)
            errors.add(new Exception("No runnable methods"));
    }

你可以覆盖这个方法并删除大小验证,或者添加你自己的验证,这将考虑到注释的测试方法。
注意,这个方法是@Deprecated,在以后的版本中将被删除。

相关内容

  • 没有找到相关文章

最新更新