【问题标题】:Java integration test reusable base setupJava集成测试可重用基础设置
【发布时间】:2017-11-06 19:26:14
【问题描述】:

在我的应用程序中,我有几个集成测试,它们都执行以下操作:

  • 设置应用程序上下文
  • 创建测试数据库
  • 用数据填充测试数据库

每次集成测试总是执行这三个初始步骤需要时间。我希望它们成为所有集成测试的某种基础。 有没有人有这方面的经验,可以通过文章、工具、线程等为我指明正确的方向?

感谢您的帮助!

/理查德

【问题讨论】:

    标签: java integration-testing


    【解决方案1】:

    你应该使用Junit5的@BeforeAll

    正如文档所说,@BeforeAll 用于表示应在当前测试类中的所有测试之前执行带注释的方法。

    因此,使用这种方法,所有数据库设置都可以为类完成一次,而不是为每个单个方法完成一次。

    【讨论】:

    • 但是我有几个测试类,我想要一个所有的基础
    • @RichardSilvertass 你可以用@BeforeAll 逻辑创建一个抽象类,然后继承你的类
    • 没错,你可以照@dehasi所说的去做
    【解决方案2】:

    这里的一个选择是使用@BeforeClass 方法创建一个基类,这样每当您需要重用它时 - 只需通过您的测试类扩展它即可。

    另一种选择是使用org.junit.runner.notification.RunListener。它为您提供了将代码连接到不同事件的可能性,例如测试开始,测试完成等:

    class TestListener extends RunListener {
        @Override
        public void testRunStarted(Description description) throws Exception {
            // Called before any test has started
        }
    
        @Override
        public void testRunFinished(Result result) throws Exception {
            // Called when all tests have finished
        }
    
        @Override
        public void testStarted(Description description) throws Exception {
        }
    
        @Override
        public void testFinished(Description description) throws Exception {
        }
    
        @Override
        public void testFailure(Failure failure) throws Exception {
        }
    
        @Override
        public void testAssumptionFailure(Failure failure) {
        }
    
        @Override
        public void testIgnored(Description description) throws Exception {
        }
    }
    

    您甚至可以通过在插件配置中添加以下代码来使用 Maven 的surefire(单元测试)插件或故障安全插件(集成测试):

    <properties>
      <property>
        <name>listener</name>
        <value>com.your.awersome.TestListener</value>
      </property>
    </properties>
    

    如果您只需要为一个项目执行此解决方案,那么与第一个选项相比,此解决方案更灵活,但恕我直言。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-29
      • 2021-07-18
      • 2013-07-11
      • 1970-01-01
      • 2021-10-29
      • 2020-08-23
      • 1970-01-01
      相关资源
      最近更新 更多