Saya memiliki desctructor di kelas saya dan saya memulai proses cmd di destructor. Saya mendapatkan pengecualian ini ketika saya sedang men-debug unit test. Kelasku :

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

Tes unit saya:

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

Juga tidak ada pengecualian ketika saya menjalankan proyek dalam mode debug. Bagaimana cara memperbaiki masalah ini? Apakah ada yang punya masalah seperti ini?

4
DIlshod K 5 Maret 2019, 08:47

1 menjawab

Jawaban Terbaik

Tempatkan blok try catch di sekitar pengujian.

[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);
     }
  }

Ini akan memberi Anda pesan kesalahan yang dihasilkan.


Ini bisa menjadi sesuatu yang sederhana seperti jalur yang tidak disetel. Jika itu masalahnya. Kesalahan yang dikembalikan adalah file not found. Dalam hal ini akan diselesaikan dengan mengubah "cmd.exe" menjadi @"C:\windows\system32\cmd.exe"

1
Strom 22 Maret 2019, 03:41