当前位置: 首页 > 面试题库 >

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

齐高阳
2023-03-14
问题内容

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

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


问题答案:

您可以@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支持在应用程序运行