问题标签 [surefire]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2345 浏览

java - Maven Surefire 是否默认按顺序执行测试用例?

这是对这个问题的跟进,当我深入研究时我意识到:

假设 Maven Surefire 插件默认按顺序执行测试用例是否合理:一个测试用例在下一个测试用例开始之前结束(我对顺序不感兴趣)。我发现您可以将 Surefire 配置为并行运行,这是否意味着顺序执行是默认行为并且将来可能会如此?

注意:如果您问我为什么要强制测试按顺序运行(我知道,好的测试应该能够并行运行),那是因为我正在解决涉及覆盖的特定问题的解决方案Web应用程序。你可以在这里阅读。

谢谢

0 投票
3 回答
332 浏览

unit-testing - 我可以让 Surefire 只执行一次昂贵的设置/拆卸吗?

我有一系列单元测试都需要与 Apache Zookeeper 服务器通信。显然,如果我有一个用于模拟服务器连接的库(或一个简单的方法来滚动我自己的),那将是最佳的,但据我所知,此时不存在,并且引擎盖下有足够的移动部件让我犹豫手动尝试。

因此,到目前为止,我们的解决方案是在本地建立一个虚拟服务器,执行测试,然后在最后将其拆除。这种工作,虽然据我所知,没有简单的方法告诉 Surefire 在整个测试运行中做一次 - 充其量,我有@BeforeClass@AfterClass装饰。

Zookeeper 初始化过程将原本应该是几毫秒的测试运行时间变成了每班几秒钟,这对整个项目来说是几分钟。如果我可以设置测试,让它建立一个服务器,运行每个测试,然后将其拆除,我想我会看到至少一个数量级的加速。

有简单的解决方法吗?我会以错误的方式解决这个问题吗?如果有一个现有的 mock-zookeeper 库,或者我自己的一个简单的方法,那也是一个很好的解决方案。

0 投票
2 回答
9092 浏览

unit-testing - 运行“maven clean install”和Sonar时如何只运行一次单元测试?

我的 Jenkins 工作有以下配置:首先清理并构建 maven 项目,然后运行单元测试和静态分析:问题clean install sonar:sonar 是每个都运行单元测试,这有效地使构建时间加倍。installsonar:sonar

我通过使用 Jenkins 声纳插件更改并运行声纳来clean install sonar:sonar解决此问题。clean install -DskipTests现在单元测试只运行了一次,声纳显示了结果,但詹金斯不再知道这些测试了。

我的猜测是,Jenkins 只在构建后查看 surefire-reports 文件夹,而不是在 Sonar 之后(这是构建后操作)。

0 投票
2 回答
15788 浏览

unit-testing - 如果我@Ignore JUnit4 中的一个测试类,@BeforeClass 是否仍然运行?

快速背景:几天来,我一直在寻找一个 Maven / Surefire 测试运行问题,并将其范围缩小到一小部分可疑的测试。我看到的行为很疯狂。我开始mvn clean test:运行 250 次测试,跳过 0 次。现在,我将可疑测试移入并重src/test/java试:运行了 146 个测试,跳过了 0 个!Maven 的输出没有提供任何其他测试没有运行的线索,即使带有-X标志也是如此。

这让我想到了我的问题:我称测试为“可疑”的原因是整个班级都用@Ignore 装饰,所以我想将它包含在我的测试源中应该没有任何影响。然后我想到了——这些类有管理虚拟 Zookeeper 服务器的@BeforeClass/@AfterClass 方法 。之前它导致了不稳定的行为,这就是我们进行测试@Ignored 的原因。

如果 JUnit 正在运行之前/之后的代码但忽略测试,我不知道会发生什么(但它可能会非常糟糕)。这发生了吗?这应该发生吗?如果是这样,当它包含@BeforeClass / @AfterClass 时,我该怎么说“作为参考,这是一个应该有效但需要修复的测试”?同样令人感兴趣的是:这对 Surefire / Maven 到底做了什么,它导致不相关的测试从地球表面脱落

0 投票
1 回答
3182 浏览

spring - 使用 Maven/JUnit/Spring 在第一次失败时停止测试

我希望 Maven 在遇到第一个错误时停止尝试运行我的 JUnit Spring 测试。这可能吗?

我的测试类如下所示,我将它们作为标准 Maven 目标运行。

如果 Spring 配置中有错误,那么每个测试都会尝试重新启动 Spring 上下文,这需要 20 秒。这意味着我们很久没有发现任何测试失败了,因为它会在得出构建失败的结论之前尝试运行所有测试!

0 投票
3 回答
4086 浏览

maven - 如何为 Surefire Maven 插件指定 JUnit 自定义运行器?

假设我有一个junit自定义类加载器,它从文本文件中读取测试数据并在运行时创建和运行测试。跑步者不使用测试类。

现在我想用surefiremaven 插件运行它。也就是说,我想将 runner 指定surefirepom.xml.

我可以这样做吗?

0 投票
2 回答
1171 浏览

maven - Maven:如何解决 Surefire 的 -Dtest 覆盖包含和排除?

我在一个配置文件中有两个肯定执行 - 他们需要不同的配置。当我运行 -Dtest=... 时,匹配的测试会运行两次——每次执行一次。

我怎样才能使测试只运行一次?或者更好的是,我怎样才能确保surefire遵循包含和排除?(一次执行将运行 0 个测试;我会使用 -DfailIfNoTest=false。)

0 投票
2 回答
742 浏览

maven - 针对 XML 文件执行检查,例如 Oracle OSB 文件和 Soap-UI 测试文件

寻找一种我们可以检查 XML 文件的方法,而不仅仅是模式验证。找到了一些对 Schematron 的引用,看起来很有趣,但很难看到我们如何将这一切拼凑起来:

问题背景

我们正在处理只生成一大堆 XML 文件的 Oracle OSB。我们还生产用于集成测试的 Soap-UI 测试套件。

我们刚刚开始正式制定我们的编码标准和开发指南,这些东西在执行代码审查时为我们提供了指导。然而,很多这些检查真的觉得它们可以自动化。很像 checkstyle 如何在我们的 java 代码中进行检查。

例如,在我们的 Soap-UI 测试中,我们希望确保每个soap 请求都有Schema Compliance 和Soap Response 的断言。这个“检查”可以写成一个非常简单的 xpath。

我们的 OSB 中的类似检查生成了 XML,例如确保变量符合驼峰命名法、资源路径不引用项目外部的文件、存在顶级错误处理。

理想的解决方案

我们已经在 maven 中运行了构建,soap-ui 测试正在吐出肯定格式的报告。我们使用 jenkins 作为我们的 CI 服务器,它能够获取这些可靠的报告,因此我们可以轻松查看测试结果并了解构建失败的原因。

我们希望找到可以为我们执行这些检查的东西,并让它们在 jenkins 中干净地报告。

到目前为止我能想到的最好的:

  • 让 maven 运行运行 schematron 检查的 ant 任务
  • 找到一种将 schematron 输出转换为安全输出的方法
  • 修改 jenkins maven-runner 以获取生成的肯定报告

但感觉就像我被困在了这里的兔子洞里。如果这是解决此问题的正确方法,我认为其他人已经解决了这个问题,但很难找到任何关于将 schematron 与 CI 工具或 maven 集成的有用信息。

schematron 值得研究吗?

是否有其他工具可以更紧密地与我们现有的设置集成,更适合?

0 投票
1 回答
1073 浏览

java - 使用 netbeans 6.9.1 调试 maven 测试?

我在 netbeans 6.9.1 中有一个 maven 项目,里面有一个 junit 4.4 测试类。

在 netbeans 上下文菜单中,我可以“清理和构建”我的项目,并且在输出中我可以看到,我的测试类是由 surefire 找到并运行的。

现在我从上下文菜单“调试测试文件”中选择,在输出中它就像

--- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ <project-name> --- 编译2个源文件到<project-path>\target\test-classes

--- maven-surefire-plugin:2.7.2:test (default-cli) @ <project-name> --- Surefire 报告目录:<project-path>\target\surefire-reports


测试


没有要运行的测试。

到目前为止我检查过的内容:

  • 构建项目找到测试文件,但仍然存在 <testSourceDirectory> 并且正确

  • *.pom 依赖项中只有一个 junit - 4.4

  • 类文件本身看起来像

    导入 junit.framework.TestCase;

    导入 org.junit.Test;

    公共类 SomeTest 扩展 TestCase { @Test public void testFoo() throws Exception { / --- /} }

  • 调试的 netbeans 动作描述看起来像

    执行目标:test-compile surefire:test

    设置属性: jpda.listen=true maven.surefire.debug=-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address} jpda.stopclass=${packageClassName} failIfNoTests=false // 这是我的补充,没有它仍然失败 forkMode=once test=${className}

  • 项目 *.pom 文件中的任何地方都没有安全插件部分

0 投票
0 回答
179 浏览

java - 如何在 JUnit 中添加到肯定报告的积极步骤

我正在使用肯定报告来记录我的 JUnit 测试。我想在执行 JUnit 数据后创建类似测试日志的内容,但我不知道如何在不破坏测试的情况下将其他数据添加到肯定报告中。有人有什么想法吗?也许我应该使用除了万无一失之外的其他东西?