Java 设置JUnit测试数据库
我正在为有测试数据库的东西编写Java 设置JUnit测试数据库,java,database,unit-testing,testing,junit,Java,Database,Unit Testing,Testing,Junit,我正在为有测试数据库的东西编写JUnittest。它从一个空数据库开始。 我想测试不同的东西,但我不想用相同的参数复制insertRecord 是否有一种简单的方法来指定要执行的行?例如,我只想在一个@test函数中添加tom和andy 我知道在每个测试方法中,数据库都以0开头。 我希望能够: 在testA中,与tom和jake建立db 在testB中,与andy一起设置db 还有迈克 在testC中,使用所有这些设置数据库 但我不想在每个测试中都使用单独的insert语句。我希望能够使用一
JUnit
test。它从一个空数据库开始。
我想测试不同的东西,但我不想用相同的参数复制insertRecord
是否有一种简单的方法来指定要执行的行?例如,我只想在一个@test
函数中添加tom和andy
我知道在每个测试方法中,数据库都以0开头。
我希望能够:
- 在testA中,与tom和jake建立db
- 在testB中,与andy一起设置db 还有迈克
- 在testC中,使用所有这些设置数据库
谢谢据我所知,JUnit不支持您想要的行为。您可能想看看哪个允许使用
@beforethod
和@AfterMethod
注释进行特定于测试的设置。它还允许使用带有@Parameter
或@DataProvider
注释的参数化数据进行更灵活的测试数据。使用抽象方法abstract void insertAllRecords()将Junit类转换为抽象类代码>
然后在需要的情况下扩展这个类。比如说
void insertAllRecords(){
insertRecord("tom", 100);
insertRecord("jake", 200);
insertRecord("tim", 300);
insertRecord("andy", 400);
insertRecord("mike", 500);
}
在集成测试中,您应该在测试完成后回滚数据库记录。这样,您就不必担心重复。我可能可以为每一列提供多个数组,并有一个循环来添加所需的数组。有更好的方法吗?你为什么不嘲笑你的数据?像mockito这样的东西。。。
class TestWithTomClass extends AbstractTestClass{
public void insertAllRecords(){
insertRecord("tom", 100);
}
@Test
public void myTestWithTom(){
....
}