[英]JUnit Test a Database Failure?
我正在尝试创建一个模拟系统故障的测试,以确保Oracle Berkeley DB XML数据库的完整性。 在插入操作期间当前正在经历数据丢失,因此我想设置一个测试,开始插入任意数量的文档并在此过程中解决该过程(类似于某人扯断电源线)。 在进程死后,我想生成一个新进程并打开数据库以确保它正常打开。
单元测试是maven构建中的众多测试之一,此测试必须在linux和Windows XP环境中运行。 我目前的思考过程是为两个操作系统敲定一个脚本,因为我可以使用该脚本来终止进程并在其位置启动一个新进程。 我还有其他选择吗? 我可以使用JUnit创建单独的进程空间/ VM吗?
我不认为这种测试是单元测试,但你可以做这样的事情。
请记住以前关于该测试的非确定性的评论。
这种行为非常适合交易。 如果您的代码要启动事务,那么当事务因流程死亡而中止时,数据库将知道如何保持数据一致。 你可能会在这里重新发明轮子。 每日WTF有一个很好的例子,说明我们如何欺骗自己重新发明轮子 。
仔细看看你的第一次修订并对自己说“手套”。
使用刚刚整个过程的线程怎么样? 例如:
我宁愿把上面的测试称为集成测试。 无论如何它会做你需要的。 多次运行将在每次运行时测试不同的数据损坏情况。
我不认为这适合UNIT测试。 在单元测试中,您希望测试一小段代码,例如您的健全代码,可能还有一个模拟数据库。 或只调用部分代码。 你所指的是一个更复杂的测试,可能值得做,但不一定值得自动化和重复运行作为单元测试的一部分,你可能经常运行(在构建或夜间或任何时候)。 添加这种测试也可能会降低单元测试速度,并对单元测试可以运行的环境施加限制。我建议编写较小的单元测试,并分别测试整个测试。
我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.