1

我有一个测试项目。我为每个包都设置了运行器的 AllTests 类Suite,并且我有一个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 开关没有帮助,输出中没有关于这些测试的信息。

谢谢!

4

1 回答 1

1

我提到我在测试中使用 PowerMock。事实证明,PowerMockRunner 使用另一个类加载器加载 IntegrationTest 接口类,而不是套件的类加载器。这是,junit 的 isAssignableFrom 测试在确定要运行的测试时会失败。-> 缺少来自@PowerMockIgnore 的一个条目。

于 2013-10-29T13:47:54.363 回答