2

我正在使用 JUnit 4.11,扩展了 BlockJUnit4ClassRunner 并使用了自定义注释。如果带有特定参数的注释存在,则不会运行测试。

这工作正常,除了在一个类中的所有测试都被过滤掉但自定义测试运行器的情况。

基本上与这篇文章中描述的完全一样:JUnit4 skip test(s) based on custom java annotations

我尝试了这篇文章中提到的解决方法:JUnit: how to Avoid "no runnable methods" in test utils classes

如果我引入了一个虚拟测试,那么至少有一个测试会一直运行,一切都很好。如果所有测试都没有运行,因为它们都有注释,我会得到“没有可运行的方法”异常。

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

4

1 回答 1

5

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并将在未来的版本中删除。

于 2013-03-13T11:13:45.917 回答