我正在尝试创建一个模拟系统故障的测试,以确保 Oracle Berkeley DB XML 数据库的完整性。目前在插入操作期间正在经历数据丢失,因此我想设置一个测试,开始插入任意数量的文档并一路解雇该过程(类似于有人猛拉电源线)。进程终止后,我想生成一个新进程并打开数据库以确保它正确打开。
单元测试是 Maven 构建中的众多单元测试之一,该测试必须在 Linux 和 Windows XP 环境中运行。我目前的想法是为两个操作系统敲定一个脚本,因为我可以使用该脚本终止进程并在其位置启动一个新进程。我还有其他选择吗?我可以使用 JUnit 创建一个单独的进程空间/VM 吗?
最佳答案
我不认为这种测试是单元测试,但是您可以做这样的事情。
- 使用ProcessBuilder类来构造和启动进程,存储返回的 Process 对象。
- 开始插入记录。
- 在某个时候destroy()过程。
请记住之前关于此测试的非确定性的评论。
我遇到了 SQLite team also doing a simulated failure strategy作为他们的自动化测试套件的一部分。
关于java - JUnit 测试数据库失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2119436/