喂,
我有以下情况:
我们正在开发 Eclipse RCP应用程序,并希望从Eclipse 3.4切换到 Eclipse 3.5 。我们的JUnit-Tests正在使用JUnit 4.3.1,我们有一个启动配置来启动我们的测试套件。我想我不需要在这里详细介绍。
问题是:
使用Eclipse 3.5运行测试不起作用:JUnit在测试类中找不到任何注释(既不是(at)Test也不是(at)RunWith)。
我使用一些日志记录输出修补了junit库以检查发生了什么。我发现这个问题是一个类加载问题:
传递给JUnit的测试类位于一个ClassLoader中,它不同于JUnit用于加载注释类的类,如'RunWith'。 Eclipse 3.4中不是这种情况
in org.junit.internal.requests.ClassRequest:
public Runner getRunner() {
log("TestClass ClassLoader: "+this.fTestClass.getClassLoader());
log("RunWith.class ClassLoader: "+RunWith.class.getClassLoader());
... // validating test class: searching for annotations and more
}
第一行打印另一个类加载器而不是第二行。这很糟糕,因为JUnit 无法将测试类中的注释与Annotation-Class(此处为:RunWith.class)相匹配:CL1中的“RunWith”不等于CL2中的“RunWith”。
我有一个指向核心问题的解决方案:用JUnit 4.3.1替换Eclipse Galileo中的JUnit 4.5 ,这样只有一个JUnit-Version:Test-Run和测试类都使用JUnit 4.3.1(我必须修补“org.eclipse.jdt.junit4.runtime”来接受更早的junit版本)。
我想我也可以在我的测试类中使用版本4.5替换JUnit 4.3.1,但这还不是一个选项。
猜测: 类加载器是不同的,因为类来自'不同的JUnit-Bundles:测试类及其注释版本为4.3.1,测试运行于版本4.5
我想知道的是什么:除了修补Eclipse(替换JUnit版本)之外还有其他解决方案吗?任何命令行参数或类似的?强制Eclipse使用JUnit 4.3.1的任何配置?
欢迎任何关于上述分析的提示!
答案 0 :(得分:0)
我不确定这是你在找什么,但是:
在JUnit测试的运行配置中,您可以选择要使用的 Test Runner (JUnit 4,JUnit 3 ...)