我有一个测试项目。我为每个包设置了具有Suite
运行器的AllTests类,并且我有一个聚合所有其他AllTest
类的主AllTest
。主人也是Suite
。
我定义了一个接口IntegrationTest
和一个IntegrationTestSuite
类。 IntegrationTestSuite
由Categories
和SuiteClass
运行,我指定了主AllTests
,并在IncludeCategory
添加了IntegrationTest.class
注释。在几个测试中,我在类级别使用注释@Category(IntegrationTest.class)
来包含集成套件中的一些测试。
我有几个运行PowerMockRunner
的测试类,以及@Category(IntegraionTest.class)
的注释。我的问题基本上是,其中一些测试是由我的Gradle构建执行的,有些是刚跳过的。如果我删除了跳过测试的PrepareForTest
注释,我会收到一条错误消息,指出powermock没有正确显示,并且这些错误消息也显示在报告中,否则只是沉默。
关于这一点的奇怪之处在于,在短时间内,当我在Eclipse中运行相同的套件时,它能够找到并运行这些测试gradle跳过。但是过了一段时间,Eclipse JUnit运行程序也忘记了那些测试,现在运行套件时它不会运行它们。如果我直接运行这些测试,它们会成功运行。
知道我做错了什么,或者我在哪里可以查看出错的地方?使用gradle --stacktrace或--debug开关没有帮助,输出中没有关于这些测试的信息。
谢谢!
答案 0 :(得分:1)
我提到我在测试中使用PowerMock。事实证明,PowerMockRunner将IntegrationTest接口类加载到另一个类加载器,而不是套件的类加载器。这是,junit的isAssignableFrom测试将在确定要运行的测试时失败。 - >缺少@PowerMockIgnore的一个条目。