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中,使用所有这些设置数据库
但我不想在每个测试中都使用单独的insert语句。我希望能够使用一些参数调用insertAllRecords


谢谢

据我所知,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(){
       ....
    }