程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Spring Boot / JUnit,针对多个配置文件运行所有单元测试大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Spring Boot / JUnit,针对多个配置文件运行所有单元测试?

开发过程中遇到Spring Boot / JUnit,针对多个配置文件运行所有单元测试的问题如何解决?下面主要结合日常开发的经验,给出你关于Spring Boot / JUnit,针对多个配置文件运行所有单元测试的解决方法建议,希望对你解决Spring Boot / JUnit,针对多个配置文件运行所有单元测试有所启发或帮助;

如果您使用R_930_11845@aven,则实际上可以从命令行指定活动配置文件(或在需要时使用env变量):

@H_736_5@mvn clean test -Dspring.profiles.active=h2-test

在这种情况下,使用参数化测试的方法可能不起作用,因为必须在Spring启动其上下文之前指定配置文件。在这种情况下,当您运行参数化集成测试时,上下文将在测试运行程序开始运行测试之前已经启动。同样,出于其他原因发明了JUnit的参数化测试(使用不同的数据序列运行单元测试)。

编辑:还有一件事- 当您决定使用时,@RunWith(Parameterized.class)您将无法使用其他跑步者。在许多情况下(如果不是全部,如果涉及集成测试),您想要指定其他运行程序,例如springrunner.class-使用参数化测试,您将无法做到这一点。

解决方法

我有一个由几个测试组成的BaseTest类。每个测试都应针对我列出的每个配置文件执行。

虑过使用参数化值,例如:

@RunWith(Parameterized.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
// @ActiveProfiles("h2-test") // <-- how to iterate over this?
public abstract class BaseTest {

@Autowired
private TestRepository test;

// to be used with Parameterized/Spring
private TESTContextManager TESTContextManager;

public BaseTest(String profilE) {
   System.setProperty("spring.profiles.active",profilE);
   // TODO what now?
}

@Parameterized.Parameters
public static Collection<Object[]> data() {
  Collection<Object[]> params = new ArrayList<>();
  params.add(new Object[] {"h2-test" });
  params.add(new Object[] {"mysql-test" });
  return params;
}

@Before 
public void setUp() throws Exception {
  this.TESTContextManager = new TESTContextManager(getClass());
  this.TESTContextManager.prepareTesTinstance(this);
  // maybe I can spinup Spring here with my profile?
}

@Test
public void testRepository() {
  Assert.assertTrue(test.exists("foo"))
}

我如何告诉Spring使用这些不同的配置文件运行每个测试?实际上,每个配置文件都将与不同的数据源(内存h2,外部mysql,外部Oracle等)进行通信,因此必须重新初始化我的存储库/数据源。


我知道我可以指定@ActiveProfiles(&Hellip;),甚至可以从BaseTest扩展并覆盖ActiveProfile批注。
尽管这行得通,但我只展示了我的测试套件的一部分。我的许多测试类都是从BaseTest扩展而来的,我不想为每个类创建几个不同的配置文件存根。目前有效,但难看的解决方案:

  • BaseTest(@ActiveProfiles(“ mysql”))
    • FooClassMySQL(来自BaseTest的注释)
    • FooClassH2(@ActiveProfiles(“ h2”))
    • BarClassMySQL(BaseTest的注释)
    • BarClassH2(@ActiveProfiles(“ h2”))

谢谢

大佬总结

以上是大佬教程为你收集整理的Spring Boot / JUnit,针对多个配置文件运行所有单元测试全部内容,希望文章能够帮你解决Spring Boot / JUnit,针对多个配置文件运行所有单元测试所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。