在Eclipse和Ant中运行Junit测试时,我遇到了差异。这是场景:
一切都按照Eclipse的预期运行,但是,当我运行了一个Ant构建脚本时,我无法获得准确的Junit报告。我对测试运行器和测试用例进行了几处更改(简而言之,我向所有测试用例中添加了Test
suite()方法),这返回了一个新的Junit4TestAdapter,并让我们的自定义运行器执行RunNotifier.fireTestAssumptionFailed(Failure)而不是fireTestAssumption。现在,一切都在Ant中运行良好,但是在Eclipse中运行时,失败被标记为已通过。
是否有任何有关Eclipse的文档,确切解释了它如何运行Junit测试?我基本上是想知道Eclipse如何执行Junit测试,是否直接通过Ant运行,是否使用Java与Junit进行接口等等。如果有人知道该问题的实际解决方案,我也欢迎这样做,但是我会我真的很想尝试自己解决这个问题,我只需要向正确的方向指出一点即可。
首先要回答您的问题,如果Ant junit与Eclipse
JUnit之间存在差异,则可能是类路径或环境问题。最简单的方法是找到一个在两者之间表现不同的测试,并打印出系统属性,然后从该方向进行操作。要尝试的另一件事是从Eclipse中运行ant脚本,以查看这是否有所不同(因为环境会发生变化)
Eclipse不使用Ant运行测试。
关于Eclipse如何运行JUnit测试,这是一个快速概述。警告:Eclipse JUnit插件有一些深奥的魔力。
Eclipse有4个JUnit插件,在大多数配置中默认都安装了这些插件:
这些是实际CVS存储库的git镜像。上一次我尝试使用它们时,它们没有编译,但是它们会为您提供代码,您至少可以将项目导入Eclipse并进行查看。
如果我们忽略配置页面,插件如何创建运行配置,JUnit视图本身的代码以及如何找到要运行的相关测试,那么我们可以集中精力于它如何运行测试。
核心类是org.eclipse.jdt.junit.launcher.JUnitLaunchConfigurationDelegate
和org.eclipse.jdt.internal.junit.runner.RemoteTestRunner
。JUnitLaunchConfigurationDelegate
读取启动配置并派生一个将在其中运行测试的JVM。此新JVM的主要类是RemoteTestRunner
。如果要在项目上作为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存储库开始,将项目导入Eclipse并尝试遍历代码。
我有以下场景。 一个类,其中我有一个API,其内容如下: 这里我们有一个MyOtherClass,它包含一个执行某些操作的API decodeAndGetName()。它在另一个包中,我无法修改它的代码。 要求 我需要为上面的编写一个jUnit测试。现在我想以某种方式模拟的对象并模拟的返回值。 我无法做到这一点,因为我们有一个新的MyOtherClass(),一旦流到达这一行,它就会创建一个新实例
问题内容: 我刚刚在Eclipse上第一次安装了插件m2e。 我编写了一个简单的JUnit(版本4)测试。我可以从Eclipse中运行它,但不能从pom.xml中运行它(alt单击,运行方式,Maven测试)。我想我需要告诉Maven搜索该课程,但我只是不知道如何。 另外,我在groupId“ junit”中找不到JUnit 4:只有版本3.8.1可用。我真的需要为3.x版本而不是4+版本编写测试
在我的Eclipse项目(Eclipse Luna)中,我有一些JUnit测试用例,我不想在完全回归测试中运行。例如,因为它们需要用户在场以验证结果(例如,如果声音正确播放),或者因为它们只在特定系统上正确运行。这些测试大多是在对被测试类进行更改时手动使用的。我已经使用来忽略这些测试。 当我从Eclipse运行一个包含忽略测试的类(运行为->Junit测试)时,它将在测试列表中显示忽略的测试。
问题内容: 目前,我有以下 build.gradle 文件: 这 的build.gradle 文件是我的仓库 在这里 。我所有的主文件都在 src / model /中 ,它们各自的测试在 test / model中 。 如何正确添加JUnit 4 依赖项 ,然后在 测试/模型 文件夹中运行那些测试? 问题答案: 如何正确添加junit 4依赖关系? 假设您要针对标准Maven(或等效版本)存储库
当前我有以下build.gradle文件: 此build.gradle文件用于我的存储库。我的所有主文件都在src/model/中,它们各自的测试都在test/model中。
从很久以前的某个版本开始(大约是1.b.35版),Nutz 就偷偷的加入了 maven 的 pom.xml 文件, 极好的解决了测试时需要依赖其他 jar 包的问题,接下来就让我们使用 Maven 来进行 JUnit 测试吧。 Nutz 在 Github 的 地址为 https://github.com/nutzam/nutz(Git@OSC镜像 https://git.oschina.net/n