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

在Eclipse中独立运行所有JUnit测试,每次都重新加载Spring上下文

郑理
2023-03-14

目标:在Eclipse中找到一种方法来执行JUnit类中的所有测试,该类在每次测试之前重新加载Spring上下文,而不是一次。

场景:我继承了DAO测试套件,它使用内存中的HSQL数据库,该数据库在上下文加载时使用一些示例数据进行初始化。在运行测试时,我注意到如果执行整个类,所有测试都会通过。但具体的测试方法在单独执行时失败。显然,这些测试并不是独立的,早期的测试正在改变数据库状态,而不是在它们自己之后进行清理,这取决于以后的测试是否通过。我想确定哪些测试是依赖的,并且在自己运行时会失败,而不必手动执行每个测试或修改代码。

共有1个答案

田志
2023-03-14

您可以在测试类中使用@DirtiesContext

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { MyConf.class })
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
public void MyTestClass {

这将在每个测试方法之后重新加载上下文。

 类似资料:
  • 问题内容: 目标:在Eclipse中找到一种方法来执行JUnit类中的所有测试,该方法在每次测试之前而不是一次重新加载Spring上下文。 场景:我继承了DAO测试套件,该套件使用了HSQL内存数据库,该数据库在上下文加载时使用一些示例数据进行了初始化。在运行测试时,我注意到如果执行了整个类,则所有测试都将通过。但是特定的测试方法在单独执行时会失败。显然,测试不是独立的,早期测试会更改数据库状态并

  • 问题内容: 我有一个包含200多个测试类别的近500个单独测试的项目。这些测试中有一些在完成测试后并不能很好地关闭它们自己的状态,在Eclipse中这会导致某些测试失败。通过Ant从命令行运行测试套件时,所有测试均通过。 我可以在Eclipse中以某种方式启用“测试隔离”吗?我不在乎是否需要更长的时间。 从长远来看,我会清理行为异常的测试,但短期而言,我想使测试正常工作。 问题答案: 如果在Ecl

  • 问题内容: 我有一个包含2个测试的测试类: 当我单独运行测试时,我不会出错,但是当我同时运行所有测试时,会失败。失败是由于某些测试修改了应用程序上下文导致的: 是否可以单独运行此测试?我只想在启动test1时读取所有必需的东西,然后运行测试,然后关闭所有必需的东西。然后启动test2。 问题答案: 您可以在修改应用程序上下文的测试类上使用@DirtiesContext批注。 Java文档 Spri

  • 问题内容: 我刚刚在Eclipse上第一次安装了插件m2e。 我编写了一个简单的JUnit(版本4)测试。我可以从Eclipse中运行它,但不能从pom.xml中运行它(alt单击,运行方式,Maven测试)。我想我需要告诉Maven搜索该课程,但我只是不知道如何。 另外,我在groupId“ junit”中找不到JUnit 4:只有版本3.8.1可用。我真的需要为3.x版本而不是4+版本编写测试

  • 基本上,我们希望每一个请求都重新加载用户的权限,因为用户的权限可能会在不同的web请求之间发生变化。 例如,一个用户登录并随后被授予新的权限(并通过电子邮件通知他们拥有新的权限),我知道该用户实际获得新权限的唯一方法是注销,然后再次登录。如果可能的话,我会尽量避免。 欢迎任何友好的建议。

  • 我有一个SpringBoot应用程序,并使用postgres测试容器编写了单元测试(https://www.testcontainers.org/)还有朱尼特。测试具有@SpringBootTest注释,该注释在运行测试之前加载上下文并启动测试容器。 在我比较旧的Macbook上加载上下文和启动容器大约需要15秒,但是测试本身非常快( 我知道IntelliJ和Springboot支持在应用程序运行