Mar*_*ies 5 junit h2 junit5 jakarta-ee quarkus
I\xc2\xb4m 在我的 Quarkus 项目中使用带有 @QuarkusTestResource 注释的 H2 数据库。每个测试方法都在进行测试并检查是否存在一定数量的用户等。
\nI\xc2\xb4m 面临的问题是,每次测试运行后数据库不会\xc2\xb4t 被重置,这就是测试失败的原因,因为他们正在获取先前测试运行的结果。
\n@QuarkusTestResource(value = H2DatabaseTestResource.class)\nclass UserServiceTest {\n\n\n @Inject\n UserService userService;\n\n @Inject\n UserRepository userRepository;\n\n private User userA;\n private User userB;\n\n @Transactional\n @BeforeEach\n void setUp() {\n userA = new User();\n userA.setEmail("a");\n userA.setName("a");\n\n userB = new User();\n userB.setName("b");\n userB.setEmail("b");\n\n userRepository.persist(userA);\n userRepository.persist(userB);\n }\n\n @Test\n void testA(){\n //count == 2\n }\n\n\n @Test\n void testA(){\n //count == 4\n }\n\n\n}\nRun Code Online (Sandbox Code Playgroud)\n如何在每次测试后重置H2数据库以使它们彼此独立?
\n我在每次测试中都使用@TestTransaction而不是。@Transaction
@QuarkusTest
public class TestInvoiceRepositoryfindAllInvoicesToBePaid {
@Inject
MyRepository myRepository;
@Test
@TestTransaction
public void do_something_in_database_01() {
// it generates and persist data I need for my test
generateTestData();
// test my repo method to make sure it does what I want
MyObject myObject = myRepository.findSomething();
assertNotNull(myObject);
}
@Test
@TestTransaction
public void do_something_in_database_02() {
// here I need to insert the data again, because
// the previous test rolled everything back at the end of it
generateTestData();
// test my repo method to make sure it does what I want
myRepository.findSomething2();
}
private void generateTestData() {
...
...
...
myRepository.persist(something);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3452 次 |
| 最近记录: |