2015-09-11 31 views
0

您认为这是测试异常和抛出的好方法吗?有什么建议么?预期异常单元测试

这是我的代码魔女我沃尔德想测试异常:

[TestMethod] 
     [ExpectedException(typeof(ArgumentNullException))] 
     public void EstablishEndGetConnectionTest() 
     { 
      DbRepository core = null; 

      core = DbRepository.GetInstance(); 
      core.EstablishConnection("postgres", "1234"); 
      Assert.IsTrue(core.IsConnected); 

     } 
+0

同类问题:http://stackoverflow.com/questions/933613/how-do-i-use-assert-to-verify-that-an-exception-has-been-thrown – Ulric

回答

1

你捕获所有异常和正重新:

我用来测试
public void EstablishConnection(string user, string pass) 
     { 
       try{ 

       string connstring = String.Format("Server=" + CONNECTION_HOST + ";Port=" + CONNECTION_PORT + ";Database=" + CONNECTION_DATABASE + ";User Id=" + user + ";Password='" + pass + "';" + CONNECTION_OPTIONS); 
       connection = new NpgsqlConnection(connstring); 
       connection.Open(); 

       if (connection.State != ConnectionState.Open) 
       { 
           IsConnected = false; 
       } 
       IsConnected = true; 

      }catch (Exception e) 
      { 
       throw; 
      } 
     } 

单元测试代码直接把它们扔掉。所以基本上你的try/catch块是没用的。

try 
{ 
} 
catch (Exception e) 
{ 
    // Unless you do something here, the try/catch block is useless 
    throw; 
} 

第二点,你不应该指望抛出异常ArgumentNullException;你应该总是在调用方法之前检查空值。

至于[ExpectedException]属性本身,没关系。