我正在为验证文件而编写的验证工具创建一些测试。如果找到正在检查的文件的错误,我会调用Environment.Exit()
。当正常运行时,这可以正常退出程序。
然而,当我运行我的测试并遇到Environment.Exit()
测试终止但我想继续测试并检查我的程序生成的文件。当测试终止时,它会给出消息:
测试运行时代理进程已停止。
无论如何我可以阻止测试过早结束吗?有没有其他方法可以终止程序但继续测试?我应该考虑多线程吗?
或者我应该重新考虑我的实施?
答案 0 :(得分:1)
我的建议是当有错误文件检查你的文件时抛出异常(如果它没有抛出)。
在你的生产代码中调用这个方法,用另一个包围try / catch和内部catch的方法,你可以做Environment.Exit()
。
现在写两个不同的测试
一个用于测试有效文件。在这种情况下,它应该没有任何问题地通过所有断言。
第二个测试具有错误条件的文件。在这种情况下,您可以使用与{nunit的ExpectedException
类似的内容来确认其抛出适当的异常。
简而言之,请重新考虑您的实施。
答案 1 :(得分:1)
删除Environment.Exit
并抛出一个异常,除了基本异常处理程序(可以打印消息或不打消息)之外没有捕获任何异常。
测试运行期间抛出的异常将不会被捕获,因此测试将正常失败并继续。当您正常运行应用程序时,该异常会导致堆栈展开,直到退出应用程序的基本异常处理程序。
查看AppDomain.UnhandledException以及是否还要捕获不同线程上的异常,Application.ThreadException