«System.ComponentModel.Win32Exception: операция завершилась успешно» во время отладки модульного теста - PullRequest
0 голосов
/ 05 марта 2019

В моем классе есть деструктор, и я запускаю процесс 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 голосов
/ 22 марта 2019

Поместите блок 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"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...