由于某些测试类调用批处理顶点类,我们遇到了部署错误。发生的错误是:
“System.unexpectedException:在测试方法中只能调用一个executeBatch。”
在我们的测试类中,有insert和update语句,它们又从触发器调用批处理顶点。我们还尝试使用“Test.isRunningTest()”方法限制批处理查询,但我们再次面临同样的错误。
代码在沙盒中工作正常,错误只在部署到生产时出现。
此外,导致错误的测试类在生产中之前工作正常。
请为上述错误提供一些指示/解决方案。
谢谢。
答案 0 :(得分:0)
我建议最好的方法是确保触发器在Test.IsRunningTest()
为true
时不执行批处理,然后使用它自己的测试方法测试批处理类。我怀疑你的触发器被触发两次,因此创建批处理实例并运行多个。
使用专用测试方法,您可以执行指定查询限制的批处理,并且应使用可选的批处理大小参数来控制要执行的调用次数,即如果限制为50,则执行此操作:
Database.executeBatch(myBatchInstance, 25);
它仍然需要两次调用execute()
方法来覆盖所有记录,这就是你遇到问题的地方。