我正在使用 JUnit 4 来测试数据库应用程序。由于每个测试在运行之前都需要对数据库进行特殊的预设,因此我使用的是@Before
先加载数据的@After
方法和从数据库中删除所有数据的方法。由于某些原因,我不能使用 DBUnit,但我必须使用一些自定义 Java 实现来完成数据库加载和清理工作。虽然我可以从方法中的这个自定义实现创建一个类的实例,但在@Before
方法中获得相同的实例很重要@After
。
我的第一个想法是myObject
在测试类中使用一个字段(例如, )并在@Before
方法中设置它,这样我就可以在@After
方法中再次使用它。但是,我不确定 JUnit 生命周期以及当测试并行运行时它将如何表现,即是否myObject
会被覆盖。
另一个想法是使用一个 JUnit ,它在方法TestWatcher
中创建该对象的一个实例starting
并将它也保存在一个字段中。然后我@Rule
在我的测试类中使用通过实现中的getter方法访问这个实例TestWatcher
。
所以我的问题基本上是:
@Before
1)在方法中预设数据库并删除方法中的所有数据是一种好习惯@After
吗?所以如果下一个测试只需要加载少量数据,它会运行得更快。
2)如何访问在@After
方法中创建的方法中对象的同一实例@Before
。即使测试并行运行,也必须保证它是同一个实例。我的两个想法中的任何一个都是实现它的好方法,哪个更好?
谢谢!