预期异常单元测试

本文关键字:单元测试 异常 | 更新日期: 2023-09-27 18:12:12

你认为这是测试异常和抛出的好方法吗?有什么建议吗?

这是我的代码,我想测试异常:

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

我用于测试的单元测试代码:

   [TestMethod]
        [ExpectedException(typeof(ArgumentNullException))]
        public void EstablishEndGetConnectionTest()
        {
            DbRepository core = null;
             core = DbRepository.GetInstance();
             core.EstablishConnection("postgres", "1234");
             Assert.IsTrue(core.IsConnected);
        }

预期异常单元测试

您正在捕获所有异常并当前直接重新抛出它们。所以基本上你的try/catch块是没用的。

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

第二点,你不应该期望异常ArgumentNullException被抛出;在调用方法之前,您应该始终检查空值。

对于[ExpectedException]属性本身,它是好的