我正在尝试创建一个模拟系统故障的测试,以确保Oracle Berkeley DB XML数据库的完整性。在插入操作期间当前正在经历数据丢失,因此我想设置一个测试,开始插入任意数量的文档并在此过程中解决该过程(类似于某人扯断电源线)。在进程死后,我想生成一个新进程并打开数据库以确保它正常打开。
单元测试是maven构建中的众多测试之一,此测试必须在linux和Windows XP环境中运行。我目前的思考过程是为两个操作系统敲定一个脚本,因为我可以使用该脚本来终止进程并在其位置启动一个新进程。我还有其他选择吗?我可以使用JUnit创建单独的进程空间/ VM吗?
答案 0 :(得分:1)
我不认为这种测试是单元测试,但你可能会做这样的事情。
请记住以前关于此测试的非确定性的评论。
作为自动测试套件的一部分,我遇到了SQLite team also doing a simulated failure strategy。
答案 1 :(得分:0)
这种行为非常适合交易。如果您的代码要启动事务,那么当事务因流程死亡而中止时,数据库将知道如何保持数据一致。你可能会在这里重新发明轮子。每日WTF就是我们如何欺骗自己reinventing the wheel的一个很好的例子。
仔细看看你的第一次修订并对自己说“手套。”
答案 2 :(得分:0)
如何只使用整个过程的线程?例如:
我宁愿将上述测试称为集成测试。无论如何它会做你需要的。 多次运行将在每次运行时测试不同的数据损坏情况。
答案 3 :(得分:0)
我不认为这适合UNIT测试。 在单元测试中,你想测试一小段代码,例如你的健全代码, 可能有一个模拟DB。或只调用部分代码。 你所指的是一个可能值得做的更复杂的测试 但作为单元测试的一部分,不一定值得自动化和反复运行 你可能经常运行(在建造或夜间或任何时候)。 添加这种测试也可能会减慢您的单元测试速度并强制执行 对单元测试可以运行的环境的限制。 我建议编写较小的单元测试,并分别对整个测试进行测试。
我。