当前位置: 首页 > 知识库问答 >
问题:

在maven/surefire中,单元测试后清理的好方法是什么,不管它们是否通过?

谢典
2023-03-14

我们有一些单元测试不幸地创建了内存映射的NIO文件,创建它们的进程无法删除这些文件(一些windows问题)。

不管怎样,我想在这些测试之后进行一些清理,不管它们是否通过。我打算在准备包阶段运行一个小的ant脚本,但如果任何测试失败,surefire会立即退出。

除了使用具有测试后阶段的故障保护插件外,还有什么聪明的方法可以让我在通过或失败的情况下运行清理吗?

我怀疑没有-我已经看过所有的surefire配置选项。。。

编辑:不能在同一进程中删除内存映射的nio文件,即使是通过deleteOnExit。

共有3个答案

龚盛
2023-03-14

在POM中添加以下依赖项,并从POM中删除现有依赖项

        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.19.1</version>
                </plugin>
            </plugins>
        </build>
阴迪
2023-03-14

我会确保文件是在target/或操作系统的临时目录(使用System.getProperty(“java.io.tmpdir”)中创建的。然后,当您运行mvn clean时,或最终由操作系统自动清理它们。

柴高岑
2023-03-14

您应该将要做的事情绑定到集成后测试生命周期阶段,该阶段在集成测试阶段之后运行,集成测试阶段由maven故障安全插件处理。如果您配置了maven清洁插件,它可能会工作。

 类似资料:
  • 在使用命令时,是否需要maven-surefire插件来运行单元测试? 我阅读了文档,知道它说: Surefire插件在构建生命周期的测试阶段用于执行应用程序的单元测试。它以两种不同的文件格式生成报告: 纯文本文件(. txt)XML文件(. xml)缺省情况下,这些文件是在${Basedir}/Target/surefire-报告中生成的。 然而,我在没有使用surefire插件的情况下运行了这

  • 问题内容: 我尝试使用Maven创建一个测试项目,并且单元测试工作正常。但是,当尝试对j2ee项目执行相同操作时,surefire无法找到单元测试。测试位于正确的目录(src / test / java)中,并且正在对其进行编译。 junit测试位于src / test / java / unit / TestAddition.java pom.xml中的surefire插件配置不包含/排除任何文

  • 问题内容: 第3、16、17、18和19行用*突出显示的含义是什么。有人可以解释他们的工作吗?我是python和编程新手 问题答案: 这段代码中只有三行用*突出显示,但这是它们的意思: 第一行: 这是在声明 后面 的函数( test_Iframe 和 tearDown )的 类* 。在面向对象的编程中,使用一个类来创建“对象” 。可以将 类 视为数据/过程的抽象,而 对象 是类的特定实例。 ***

  • null 那么,如果在实际的单元测试运行之前,准备所有的事情所花费的时间是原来的两倍,那么这有什么区别呢?为什么这是推荐的方式呢?

  • 是的,包含测试的Java类命名正确。(它们以测试结尾) 尝试在pom.xml中添加以下配置: 测试位于以下结构下: /src/test/packagename/JavaClassTest.java,其中Packagename与src/main/java路径下编写的单元测试下的包相同。 我正在使用jupiter JUnit 5和maven-surefire-plugin与2.22.2 我仍然在mvn

  • 问题内容: 第3、16、17、18和19行用*突出显示的含义是什么。有人可以解释他们的工作吗?我是python和编程新手 问题答案: 此代码中只有三行用*突出显示,但这是它们的含义: 第一行: 这是在声明 后面 的函数( test_Iframe 和 tearDown )的 类* 。在面向对象的编程中,使用一个类来创建“对象” 。可以将 类 视为数据/过程的抽象,而 对象 是类的特定实例。 ***