你如何对测试数据库运行放心?

时间:2013-09-15 13:18:30

标签: java unit-testing rest java-ee rest-assured

我正在使用放心,我想知道如何更改运行的数据库?

目前我正在测试连接到保存所有数据的数据库的应用程序,但速度很慢。我想放心使用我的测试数据库。我怎样才能做到这一点?我是否需要使用仅连接到仅包含部分数据的数据库的第二台服务器?

2 个答案:

答案 0 :(得分:3)

db测试很慢。期。网络测试(通过http)也很慢。首先:你想做什么?如果我们在讨论单元测试,那么你做错了。在单元测试中,你不应该测试从json到http到db的所有内容。尽量避免两者。如果您的框架堆栈支持它(例如spring-mvc),您可以在没有https流量的情况下测试您的json绑定。如果没有,请将http绑定测试与业务逻辑分开(模拟您的服务)。与数据库相同。没有别的东西,只测试你的dao / repository。

当您有许多小测试时,您可以轻松地将较慢(网络,数据库,集成烟雾测试)与快速(业务逻辑)分离,并将它们放在不同的组中。那么你也可以选择性地只运行特定的组(取决于你目前正在改变哪个部分)。同样在詹金斯你可以为每个小组分开舞台。通过这种方式,如果业务逻辑失败,您将从ci快速反馈,如果它们通过,那么jenkins将执行更慢的测试

如果由于任何原因你不想让你的测试变小,那么考虑只连接一次db(在你的测试之前)而不是关闭这个连接。这样可以加快所有测试的运行速度。如果您的测试更改了db内容,请尝试将其保留为单个事务,并在测试后进行回滚。这样你就可以避免在每次测试之前设置db

答案 1 :(得分:1)

如果要使用数据库进行测试,请使用嵌入式数据库(例如内存中的h2)。

在你的config.xml中:

<beans>

    ....
    <!-- override your datasource bean named myDataSource -->
    <jdbc:initialize-database data-source="myDataSource">
         <!-- sql script with create tables -->
        <jdbc:script location="init_database.sql"/>
         <!-- sql script with insert -->
        <jdbc:script location="seed_database.sql"/>
    </jdbc:initialize-database>  
</beans>