我有一个测试实用程序,我需要每个测试方法都有一个新实例(以防止测试之间的状态泄漏)。到目前为止,我使用的是范围“原型”,但现在我希望能够将该实用程序连接到另一个测试实用程序中,并且每个测试的连接实例都应该相同。
这似乎是一个标准问题,所以我想知道是否有“测试方法”范围或类似的东西?
这是测试类和测试实用程序的结构:
@RunWith(SpringRunner.class)
@SpringBootTest
public class MyTest {
@Autowired
private TestDriver driver;
@Autowired
private TestStateProvider state;
// ... state
// ... methods
}
@Component
@Scope("prototype") // not right because MyTest and TestStateProvider get separate instances
public class TestDriver {
// ...
}
@Component
public class TestStateProvider {
@Autowired
private TestDriver driver;
// ...
}
我知道我可以使用@Scope("singleton"),@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)但这比我需要的刷新更多——TestDriver每个测试一个新实例就足够了。此外,这种方法容易出错,因为所有使用 的测试TestDriver都需要知道它们也需要@DirtiesContext注释。所以我正在寻找更好的解决方案。
四季花海
慕容森
相关分类