Environment.exit()退出但保持测试运行

时间:2014-08-14 23:33:37

标签: c# .net exit

我正在为验证文件而编写的验证工具创建一些测试。如果找到正在检查的文件的错误,我会调用Environment.Exit()。当正常运行时,这可以正常退出程序。

然而,当我运行我的测试并遇到Environment.Exit()测试终止但我想继续测试并检查我的程序生成的文件。当测试终止时,它会给出消息:

  

测试运行时代理进程已停止。

无论如何我可以阻止测试过早结束吗?有没有其他方法可以终止程序但继续测试?我应该考虑多线程吗?

或者我应该重新考虑我的实施?

2 个答案:

答案 0 :(得分:1)

我的建议是当有错误文件检查你的文件时抛出异常(如果它没有抛出)。 在你的生产代码中调用这个方法,用另一个包围try / catch和内部catch的方法,你可以做Environment.Exit()

现在写两个不同的测试 一个用于测试有效文件。在这种情况下,它应该没有任何问题地通过所有断言。 第二个测试具有错误条件的文件。在这种情况下,您可以使用与{nunit的ExpectedException类似的内容来确认其抛出适当的异常。

简而言之,请重新考虑您的实施。

答案 1 :(得分:1)

删除Environment.Exit并抛出一个异常,除了基本异常处理程序(可以打印消息或不打消息)之外没有捕获任何异常。

测试运行期间抛出的异常将不会被捕获,因此测试将正常失败并继续。当您正常运行应用程序时,该异常会导致堆栈展开,直到退出应用程序的基本异常处理程序。

查看AppDomain.UnhandledException以及是否还要捕获不同线程上的异常,Application.ThreadException