java - 带有 Spring 引导的 JUnit 5 - 如何使用不同的配置文件重复测试?

标签 java spring spring-boot junit5

这是 JUnit 5 数据驱动测试的经典示例。

import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit.jupiter.SpringExtension;

@Slf4j
@ExtendWith(SpringExtension.class)
@SpringBootTest
class ScrathTest {
  @Autowired
  private MyBean myBean;

  @ParameterizedTest
  @ValueSource(ints = {1, 3, 5, -3, 15, Integer.MAX_VALUE}) // six numbers
  void isOdd_ShouldReturnTrueForOddNumbers(int number) {
    myBean.doSomeThing(number)
  }
}
但是,如果我需要运行的不是整数数组,而是配置文件数组呢?我的意思是我创建了一个测试,然后创建了 3 个测试配置文件,然后在每个创新中使用不同的配置文件重复该测试 3 次。是否可以?
备注 @ActiveProfile注释不是一个解决方案,因为它只是激活列出的配置文件,而不需要重复测试和重新创建上下文。

最佳答案

我不认为 JUnit5提供了类似的功能。但是,您可以创建一个抽象类,派生类将指定 Activity 配置文件。

class abstract AbstactScrathTest {

  @Autowired
  protected MyBean myBean;

  @ParameterizedTest
  @ValueSource(ints = {1, 3, 5, -3, 15, Integer.MAX_VALUE}) // six numbers
  void isOdd_ShouldReturnTrueForOddNumbers(int number) {
    myBean.doSomeThing(number)
  }

}

@Slf4j
@ExtendWith(SpringExtension.class)
@SpringBootTest
@ActiveProfiles("test1")
class ScrathTestWithTestProfile1 extends AbstractScrathTest{
}


@Slf4j
@ExtendWith(SpringExtension.class)
@SpringBootTest
@ActiveProfiles("test2")
class ScrathTestWithTestProfile2 extends AbstractScrathTest{
}

关于java - 带有 Spring 引导的 JUnit 5 - 如何使用不同的配置文件重复测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62862190/

相关文章:

java - 如何确定mockito中的Mock和injectMock对象?

java - Spring Boot 项目中未找到依赖项

properties - spring-boot 属性占位符

多模块项目中的Spring Boot i18n

java - 两个 docker 容器之间的通信问题

java - 使用 subclipse 在 SVN 中提交时出错

java - BigQuery - 导出 CSV 某些列

java - 如何在Java中获取FileInputStream中的azure blob存储内容?

java - JfreeChart:需要删除 stackedareachart 中的垂直白线

java - Broadleaf 未使用 Java > 8 构建或启动 : Unable to start embedded Tomcat