夸库斯测试。重置bean状态

问题描述 投票:0回答:1

我有一个有状态 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清洁或重置?

java junit quarkus cdi junit5
1个回答
0
投票

我通常使用

@BeforeEach
来清除状态:

QuarkusTest
class ExampleServiceTest {

    @Inject
    ExampleService service;

    @BeforeEach
    void reset() {
        service.clearState();  // Assuming such a method exists
    }

    // Remaining tests
}
© www.soinside.com 2019 - 2024. All rights reserved.