我有一个有状态 bean 和一些不同的测试用例,位于
@QuarkusTest
下。但每个测试用例都需要干净的 bean 状态才能正确执行(测试不应相互依赖)。
目前,bean 在测试中保留其状态,因此 test2
失败,这似乎不对:
@ApplicationScoped
public class ExampleService {
private final Map<String, Long> state = new HashMap<>();
public Map<String, Long> getState() {
return state;
}
public void put(String key, Long value) {
state.put(key, value);
}
}
@QuarkusTest
class ExampleServiceTest {
@Inject
ExampleService service;
@Test
void test() {
service.put("", 1L);
var state = service.getState();
Assertions.assertEquals(1, state.size());
}
@Test
void test2() {
var state = service.getState();
Assertions.assertEquals(0, state.size());
}
}
如何在测试中重置注入的 bean 状态?
附注有一个类似的问题,但似乎没有任何正确答案如何在@QuarkusTest期间保持有状态bean清洁或重置?
我通常使用
@BeforeEach
来清除状态:
QuarkusTest
class ExampleServiceTest {
@Inject
ExampleService service;
@BeforeEach
void reset() {
service.clearState(); // Assuming such a method exists
}
// Remaining tests
}