使用maven运行测试后防止数据被删除
Posted
技术标签:
【中文标题】使用maven运行测试后防止数据被删除【英文标题】:Prevent data from being deleted after running test with maven 【发布时间】:2014-12-05 11:44:12 【问题描述】:我是 Maven 新手。我正在从命令提示符运行测试。这些测试生成一个数据库。我的问题是测试完成后数据被删除。 我想维护生成的数据库以供以后使用。有没有办法在maven中做到这一点? 这是我通过命令提示符运行的:
mvn -Dtest=TestDynamicLayers test
我看到这里有一个类似的问题,但它并没有解决我的问题: Prevent data from being deleted after test run with Hibernate / Spring / Maven / mysql
谢谢 迪米特里斯
【问题讨论】:
【参考方案1】:我不希望从测试中删除数据是 Maven 行为,这通常会发生在测试的“拆卸”步骤中,或者您链接到的线程通过 @Transactional 的自动回滚建议测试。
假设测试运行,在您的示例中,TestDynamicLayers.java 是唯一正在执行的测试,因此数据删除将在测试方法之一或“之后”步骤之一中进行。例如如果使用 JUnit 注释,则需要在注释为 @AfterTest 的方法中进行拆卸。
一般来说,我建议不要使用通常在 Maven 构建的测试阶段运行的测试来产生副作用,因为这意味着多次测试执行可能会产生不同的结果。出于这个原因,需要在测试执行后删除测试数据。就我个人而言,我会更进一步,使用内存数据库进行单元测试。
我建议您为要保留的数据提取数据创建代码,并通过使用 main() 方法将其包装在测试之外执行此代码。如果您希望数据也由测试创建,您可以调用相同的代码,保留当前不需要的数据删除并直接使用 java -classpath 调用数据创建
【讨论】:
以上是关于使用maven运行测试后防止数据被删除的主要内容,如果未能解决你的问题,请参考以下文章