Surefire 未接受 Junit 4 测试

2024-06-25

由于某种原因,我无法让 Maven 2 Surefire 插件执行 JUnit 4 测试类。

public class SimpleTest {
  @org.junit.Test
  public void simple() {
     System.out.println("foo");
  }
}

但是,如果我将此类更改为 JUnit-3 之类,例如

public class SimpleTest extends junit.framework.TestCase {
  public void testBar() {
     System.out.println("bar");
  }

  @org.junit.Test
  public void simple() {
     System.out.println("foo");
  }
}

然后它被执行。这是我所做的:

  • 已验证的 Maven 版本:Apache Maven 2.2.1(r801777;2009-08-06 20:16:01+0100)
  • 已验证的 Surefire 版本:已关注this https://stackoverflow.com/questions/1336379/how-do-i-configure-maven-2s-surefire-plugin-to-run-junit-4-5 advice
  • 已验证的 Surefire 版本:检查了我的 Surefire 罐子~/.m2/repository/org/apache/maven/surefire-- 它们都是版本 2.4.2 或 2.4.3
  • done a mvn dependency:tree | grep junit确保我只依赖 junit 版本 4.7

我遇到此问题的模块没有 JUnit 3 测试。

我还缺少什么吗?


mvn -X帮助我揭示了以下内容:

...
[INFO] [surefire:test {execution: default-test}]
[DEBUG] dummy:dummy:jar:1.0 (selected for null)
[DEBUG]   org.apache.maven.surefire:surefire-booter:jar:2.4.3:runtime (selected for runtime)
[DEBUG]     org.apache.maven.surefire:surefire-api:jar:2.4.3:runtime (selected for runtime)
[DEBUG] Adding to surefire booter test classpath: /home/mindas/.m2/repository/org/apache/maven/surefire/surefire-booter/2.4.3/surefire-booter-2.4.3.jar
[DEBUG] Adding to surefire booter test classpath: /home/mindas/.m2/repository/org/apache/maven/surefire/surefire-api/2.4.3/surefire-api-2.4.3.jar
[DEBUG] dummy:dummy:jar:1.0 (selected for null)
[DEBUG]   org.testng:testng:jar:jdk15:5.8:test (selected for test)
[DEBUG]     junit:junit:jar:3.8.1:test (selected for test)
[DEBUG] Adding to surefire booter test classpath: /home/mindas/.m2/repository/org/testng/testng/5.8/testng-5.8-jdk15.jar
[DEBUG] Adding to surefire booter test classpath: /home/mindas/.m2/repository/junit/junit/3.8.1/junit-3.8.1.jar
[DEBUG] dummy:dummy:jar:1.0 (selected for null)
[DEBUG] Retrieving parent-POM: org.apache.maven.surefire:surefire-providers:pom:2.4.3 for project: null:surefire-testng:jar:null from the repository.
[DEBUG] Adding managed dependencies for unknown:surefire-testng
[DEBUG]   org.apache.maven.surefire:surefire-api:jar:2.4.3
[DEBUG]   org.apache.maven.surefire:surefire-booter:jar:2.4.3
[DEBUG]   org.codehaus.plexus:plexus-utils:jar:1.5.1
[DEBUG]   org.apache.maven.surefire:surefire-testng:jar:2.4.3:test (selected for test)
[DEBUG]     org.apache.maven:maven-artifact:jar:2.0:test (selected for test)
[DEBUG]       org.codehaus.plexus:plexus-utils:jar:1.0.4:test (selected for test)
[DEBUG]     junit:junit:jar:3.8.1:test (selected for test)
[DEBUG]     org.testng:testng:jar:jdk15:5.7:test (selected for test)
[DEBUG]     org.apache.maven.surefire:surefire-api:jar:2.4.3:test (selected for test)
...
[DEBUG] Test Classpath :
...
[DEBUG]   /home/mindas/.m2/repository/junit/junit/4.7/junit-4.7.jar

所以看来问题出在testng需要 JUnit v3.8.1 的 jar。虽然Test Classpath当设置为依赖 JUnit 4 时,为时已晚。

testng依赖项位于我的 POM 中:

<dependency>
  <groupId>org.testng</groupId>
  <artifactId>testng</artifactId>
  <version>5.8</version>
  <scope>test</scope>
  <classifier>jdk15</classifier>
</dependency>

在我将其注释掉后,测试立即开始执行。

得到教训:

  • mvn dependency:tree并不总是足够的,mvn -X是朋友。
  • Surefire 并不是为开发者天堂而设计的(我在查看项目 JIRA 报告时意识到了这一点)。尤其如此,因为如果您使用 Maven,就没有其他选择。

感谢大家的帮助。不幸的是,没有办法在 Pascal 和 Kaleb 之间分割答案点,但 Kaleb 的建议是使用mvn -X帮助我走上正确的轨道,所以正确的答案分给了他。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Surefire 未接受 Junit 4 测试 的相关文章

随机推荐

  • 空气曲棍球比赛 - 如果移动太快,球员球棒会穿过冰球

    我目前正在 Unity3d 中开发一款空气曲棍球游戏 我遇到的问题是 当玩家试图太快地击球时 玩家最终会穿过冰球 因此不会发生碰撞 如果玩家保持静止并且冰球击中玩家 或者玩家以缓慢的速度击中冰球 则游戏将按预期完美运行 玩家拥有一个使用胶囊
  • CouchDB 中的 UUID

    我想知道 CouchDB 中默认表示的 UUID 格式 虽然 RFC 4122 描述了 UUID 例如550e8400 e29b 11d4 a716 446655440000 CouchDB 使用连续的字符 例如3069197232055d
  • Python:通过xpath获取html表数据

    我觉得从 html 表中提取数据非常困难 并且需要为每个站点进行自定义构建 我非常希望在这里被证明是错误的 是否有一种简单的 Pythonic 方法可以通过使用感兴趣的表的 url 和 xpath 从网站中提取字符串和数字 Example
  • 在 Jackson 中序列化没有数据的对象

    是否可以仅使用注释来序列化 Jackson 中没有字段的对象 当我尝试序列化这样一个没有注释的对象时 我得到 Exception in thread main com fasterxml jackson databind JsonMappi
  • 减少 plpgsql 中烦人的通知

    我有一个使用临时表的函数 如果存在则必须将其删除 drop table if exists t xy create temp table t xy on commit drop as select 随后我在视图中使用这个函数 当 selec
  • 如何查看本地存储库的头和远程存储库的头之间的差异?

    在推送到远程存储库之前 我希望看到本地存储库的头部和我要推送到的存储库的头部之间的综合差异 我知道这样做的最好方法是hg clone远程存储库 获取 head 的修订版 然后在我的 head 和该修订版之间进行比较 但这很耗时 有没有快速的
  • 谷歌播放阿尔法和贝塔测试功能[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我对新版有疑问发挥开发者控制台功能 Alpha 和 Beta 测试 也许有人对此有一些经验 我通过 GoogleGroups 邀请了一些测试人员 他们
  • 接受多个后续连接到套接字

    我有一个监听器 它将任意数据 HTTP 请求传递到网络套接字 然后通过 TCP 传递 这对于第一个请求工作正常 但侦听器不接受后续的新请求 我的问题是 如果我有sock accept listener struct addr sin sin
  • 可移植类库和.NET ConcurrentDictionary

    看着http msdn microsoft com en us library dd287191 v vs 110 aspx http msdn microsoft com en us library dd287191 v vs 110 a
  • 将应用程序发送到后台并从 XCTest 中的最近应用程序重新启动它

    我正在寻找问题的解决方案 其中我需要将我的应用程序发送到后台并在特定时间间隔后从最近的应用程序重新启动它 在 Instruments UIAutomation 中使用 deactivateAppForDuration 来实现此目的 有谁知道
  • 如何在Android应用程序中的外部SD中创建目录

    我想在 mnt extsd MyFolder 这个路径上创建一个目录 调用 mkdir 时它返回 false 我在平板电脑上插入了 SD 卡 获取外部路径为 mnt extsd 并尝试在此路径上创建一个文件夹 下面是我的代码 File lS
  • 在 Windows powershell 中选择下拉列表中的 Web ui 测试自动化选项

    抱歉 如果这个问题太简单了 但我对 Windows Powershell 相当陌生 我看过的所有下拉列表教程都向您展示了如何向用户显示下拉列表 无论如何 我想做的是使用 Powershell 测试我的 Web 应用程序 我需要将下拉列表更改
  • 无法构建 Android APK - 任务“:app:mergeDebugResources”执行失败

    有些人将此问题标记为重复 但即使我尝试了类似问题中给出的所有方法后 问题仍然没有解决 aapt2 exe 仍然抛出错误并说 aapt2 exe 已停止工作 我在 Mac 机器上开发了一个项目 它完全工作正常 现在我想将这个项目转移到另一个系
  • 如何停止由 useEffect 在每次渲染时获取一些数据引起的 SideNav 闪烁 - Reactjs

    我有一个父组件 其中包含一个 SideBar 组件和一个渲染父级中嵌套路由组件的组件 SideBar 有 useEffect 钩子来进行 API 调用来检索一些数据 例如用户的名称 如果用户经过验证 我会使用它在导航顶部显示用户的名称并有条
  • 无法在 Safari 中检测到鼠标滚轮事件

    我正在尝试检测鼠标滚轮事件以调整滚动元素的大小 我有 mainDiv与几个 foo里面的桌子 我想改变 foo元素在滚动上的比例 但保留 mainDiv的大小是一样的 这是我的功能 var content document getEleme
  • 从浏览器扩展调用网页 JavaScript 方法

    我正在开发一个firefox扩展使用网络扩展 https developer mozilla org en US docs Mozilla Add ons WebExtensions Getting started这将帮助我简化以下场景的工
  • JSS 中的简单选择器和嵌套选择器

    我目前正在接受 ReactJS 培训 我正在使用material ui 和JSS 对我来说完全是新的 我不明白如何简单地选择我的 H6 元素或我的 H6 子元素 dangerStyle 任何想法 Thanks myJss js const
  • 生成带有文档的 XML 架构

    有没有办法生成带有文档的 XML Schema xsd
  • 使用 jquery 将一个 html 页面加载到另一页面中

    我想在里面加载一个 html 文件 hello world html 另一个 html 页面 index html 这两个文件位于同一位置 这是我写的代码 但它没有加载任何东西 两个警报都有效 我故意发出来检查是否 jquery 是否工作
  • Surefire 未接受 Junit 4 测试

    由于某种原因 我无法让 Maven 2 Surefire 插件执行 JUnit 4 测试类 public class SimpleTest org junit Test public void simple System out print