加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Eclipse如何实际运行Junit测试?

发布时间:2020-12-14 23:45:36 所属栏目:Java 来源:网络整理
导读:在 Eclipse和Ant中运行Junit测试时,我遇到了差异.这是场景: 所有东西都按照预期在Eclipse中运行,但是,当我通过我掀起的Ant构建脚本运行时,我无法获得准确的Junit报告.我对我们的测试运行器和测试用例进行了一些更改(简而言之,我在我的所有测试用例中添加了T
在 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插件,默认情况下都安装在大多数配置中:

> org.eclipse.jdt.junit:git://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.runtime: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,作为单个测试或作为临时文件中的测试列表,如果您在项目上执行Run as JUnit.如果您正在调试,可以通过选中运行配置中的“调试时保持活动”复选框来保持此新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并尝试完成代码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读