要首先回答您的问题,如果Ant junit和Eclipse JUnit之间存在差异,则可能是类路径或环境问题。最简单的方法是找到一个在两者之间执行不同的测试并打印出系统属性,并从该方向开始工作。另一个尝试的方法是在Eclipse中运行ant脚本,以查看它是否有所作为(因为环境会改变)
Eclipse不使用Ant来运行测试。
至于Eclipse如何运行JUnit测试,下面是一个快速概述。被警告:在Eclipse JUnit插件中有一些深奥的魔力。
Eclipse有4 JUnit的插件,这些插件都默认在大多数配置安装:
- org.eclipse.jdt.junit:混帐://dev.eclipse.org/org.eclipse.jdt/ org.eclipse.jdt.junit.git
- org.eclipse.jdt.junit.core:git://dev.eclipse.org/org.eclipse.jdt/org.eclipse.jdt.junit.core.git
- org.eclipse.jdt.junit.runtime:git://dev.eclipse.org/org.eclipse.jdt/org.eclipse.jdt.junit.runtime.git
- org.eclipse.jdt.junit4。运行时:git://dev.eclipse.org/org.eclipse。 JDT/org.eclipse.jdt.junit4.runtime。git
这些是实际CVS存储库的git镜像。上次我尝试使用它们时,它们没有编译,但它们会给你代码,并且你至少可以将项目导入Eclipse并查看它们。
如果我们忽略配置页面,插件如何创建运行配置,JUnit视图本身的代码以及它如何找到相关测试运行,我们可以专注于它如何运行测试。
核心分类为org.eclipse.jdt.junit.launcher.JUnitLaunchConfigurationDelegate
和org.eclipse.jdt.internal.junit.runner.RemoteTestRunner
。 JUnitLaunchConfigurationDelegate
读取启动配置并分叉运行测试的JVM。这个新的JVM的主要类是RemoteTestRunner
。要运行的测试作为参数传递给分叉的JVM,或者作为单个测试,或者作为临时文件中的测试列表(如果您正在以项目的JUnit身份运行)传递给分叉的JVM。如果您正在调试,则可以通过检查运行配置中的Keep alive when debugging
复选框来保持这个新的JVM处于活动状态。在这种情况下,JVM将继续存在,现有测试的重新执行将通过套接字发送。
RemoteTestRunner
运行测试并通过套接字将结果传回给Eclipse,然后Eclipse将更新JUnit视图。其核心是org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference
,它运行测试(对于JUnit 4)和org.eclipse.jdt.internal.junit4.runner.JUnit4TestListener
,这是对这些测试的RunListener
。 JUnit4TestListener扩展了RunListener
,但不覆盖testAssumptionFailure
,这可能是为什么您的测试在Eclipse中传递。 RunListener.testAssumptionFailure
是一个空的方法,它什么都不做,所以你的通知将被忽略。
我会先克隆git repos,将项目导入Eclipse并尝试通过代码工作。
Eclipse不会使用您的ant构建文件来运行JUnit测试。这是肯定的。 –
我很清楚这一点,我试图弄清楚从Ant运行相同的测试套件与通过Eclipse插件运行它们之间的差异。 –
您可能会从Eclipse Junit测试启动器中获得一些提示,特别是参数选项卡和配置选项卡。 –