调试单元测试时,“ System.ComponentModel.Win32Exception:操作成功完成”

时间:2019-03-05 05:47:40

标签: c# unit-testing

我的课堂上有解扰器,我正在析构函数上启动cmd进程。我在调试单元测试时遇到了此异常。我的课:

class Class1
{
    ~Class1()
    {
        Process process = new Process();
        process.StartInfo.FileName = "cmd.exe";
        process.Start();
    }
}

我的单元测试:

 [TestMethod]
    public void TestMethod1()
    {
        Class1 class1 = new Class1();
    }

当我在调试模式下运行项目时,也不例外。如何解决这个问题?有人遇到这样的问题吗?

1 个答案:

答案 0 :(得分:1)

在测试周围放置try catch块。

[TestMethod]
  public void TestMethod1()
  {
     try
     {
         Class1 class1 = new Class1();
         class1 = null;
         // force Garbage Collection for finalizer to run
         GC.Collect();
     }

     catch(Win32Exception w) 
     {
         Console.WriteLine(w.Message);
         Console.WriteLine(w.ErrorCode.ToString());
         Console.WriteLine(w.NativeErrorCode.ToString());
         Console.WriteLine(w.StackTrace);
         Console.WriteLine(w.Source);
         Exception e=w.GetBaseException();
         Console.WriteLine(e.Message);
     }
  }

这将为您提供产生的确切错误消息。


这可能与未设置路径一样简单。如果是这样的话。返回的错误将是file not found。在那种情况下,可以通过将"cmd.exe"更改为@"C:\windows\system32\cmd.exe"

来解决。