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

Spring/JUnit-运行不是真正“测试”的单元测试

宋望
2023-03-14

然而,该项目有许多类似的“测试”:

@SpringBootTest(classes = {Application.class})
@RunWith(SpringRunner.class)
public class DatabaseCreationProcessImplTest {

这个特殊的类创建了一个示例数据库映像,供开发人员使用。诚然,我们可以创建直接的SQL脚本,但Java进程非常有用,因为其中的代码也可以从外部源(例如Liferay)查询数据

我们为此使用单元测试的原因是因为开发人员可以轻松地在IntelliJ中运行它来加载新的数据库映像。然而,这并不是真正的“测试”,而是使用测试运行器作为运行Java进程的快速方法。

我正在建立每晚的构建,我不希望这个测试包含在构建中。我可以在构建脚本中执行以下操作:

test {
exclude 'com/mydomain/service/util/impl/DatabaseCreationProcessImplTest.class'
}

但是,通过这样做,如果在IDE中使用Spring test runner单独运行单元测试,则无法找到任何测试。我考虑在Jenkins任务中传递一个布尔值来执行此操作,例如。

test {
    systemProperties 'property': 'value'
    testLogging {
        events "passed", "skipped", "failed", "standardOut", "standardError"
    }

    // Exclusions go here
    if (Boolean.getBoolean('exclude.tests')) {
        exclude 'com/mydomain/service/util/impl/DatabaseCreationProcessImplTest.class'
    }
}

然而,这似乎是一个黑客/废话...任何方法寻找一些“最佳实践”方法来处理这一点。JUnit是快速运行Java进程的正确方法吗?还有其他选择吗?是否可以创建一个Gradle脚本,开发人员也可以使用它来调用通用Java(Spring Boot)进程?

共有1个答案

叶冥夜
2023-03-14

我认为您可以使用JUnit的@SuiteClasses注释将不是真正的测试分组在一个测试套件中:

@Suite.SuiteClasses(DatabaseCreationProcessImplTest.class)
public class NotReallyTests {}

然后使用从Jenkins命令行传递的条件来排除非真正测试套件:

test {
    if (project.hasProperty('excludeNotReallyTests')) {
        useJunit {
            excludeCategories 'fully.qualified.name.of.your.NotReallyTests'
        }
    }
}

您的Jenkins命令行将是

$ gradle -PexcludeNotReallyTests=true

与您的解决方案相比,它没有那么麻烦,因为它在codebase中而不是build.gradle文件中跟踪不是真正测试的测试分组。

 类似资料:
  • 我如何运行单元测试的Spring引导应用程序,而建设和部署使用命令。 我的期望是在运行应用程序之前执行所有单元测试,但我不想在运行应用程序之前再执行另一个maven命令,如。 我的问题是:我制作了一个简单的spring启动应用程序,在从intellij或命令行运行应用程序时,我可以找到一种运行单元测试的方法。首先,我认为可能我有错误的配置或者错误的测试类名称或者错误的项目结构。所以我从intell

  • 一、JUnit 是什么? JUnit 是一个 Java 语言的回归测试框架(regression testing framework),由 Kent Beck 和 Erich Gamma 建立。 Junit 测试也是程序员测试,即所谓的白盒测试,它需要程序员知道被测试的代码如何完成功能,以及完成什么样的功能。 二、IDEA 的 开始JUnit测试 测试项:查询全部用户数据 junit测试方法:

  • 几周前,我正在进行单元测试,它们按照预期进行构建和运行。 我休假了一周,今天早上启动了我的机器,没有对单元测试项目进行任何代码更改,测试就不再运行了。 当我说“测试不再运行”时,我并不是说它们失败了;他们实际上不会逃跑。 我试过运行或调试一个特定的测试,我试过运行或调试所有的测试,我试过从每个测试方法名称旁边的Resharper图标,我试过从test菜单项,我试过从“Unit test Sessi

  • 从很久以前的某个版本开始(大约是1.b.35版),Nutz 就偷偷的加入了 maven 的 pom.xml 文件, 极好的解决了测试时需要依赖其他 jar 包的问题,接下来就让我们使用 Maven 来进行 JUnit 测试吧。 Nutz 在 Github 的 地址为 https://github.com/nutzam/nutz(Git@OSC镜像 https://git.oschina.net/n

  • 本文向大家介绍Spring Boot 单元测试JUnit的实践,包括了Spring Boot 单元测试JUnit的实践的使用技巧和注意事项,需要的朋友参考一下 一、介绍 JUnit是一款优秀的开源Java单元测试框架,也是目前使用率最高最流行的测试框架,开发工具Eclipse和IDEA对JUnit都有很好的支持,JUnit主要用于白盒测试和回归测试。 <!--more--> 白盒测试:把测试对象看

  • 本文向大家介绍详解Spring Boot Junit单元测试,包括了详解Spring Boot Junit单元测试的使用技巧和注意事项,需要的朋友参考一下 Junit这种老技术,现在又拿出来说,不为别的,某种程度上来说,更是为了要说明它在项目中的重要性。 凭本人的感觉和经验来说,在项目中完全按标准都写Junit用例覆盖大部分业务代码的,应该不会超过一半。 刚好前段时间写了一些关于SpringBoo