• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    mstest实现类似单元测试nunit中assert.throws功能

    我们做单元测试NUnit中,有一个断言Assert.Throws很好用,但当我们使用MsTest时你需要这样写:

    复制代码 代码如下:

    [TestMethod]
    [ExpectedException(typeof(ArgumentNullException))]
    public void WriteToTextFile()
    {
    PDFUtility.WriteToTextFile("D:\\ACA.pdf", null);
    }

    现在让我们来扩展一下也实现类似成功能,增加一个类,代码如下:

    复制代码 代码如下:

    /// summary>
    /// Useful assertions for actions that are expected to throw an exception.
    /// /summary>
    public static class ExceptionAssert
    {
    /// summary>
    /// Executes an exception, expecting an exception to be thrown.
    /// Like Assert.Throws in NUnit.
    /// /summary>
    /// param name="action">The action to execute/param>
    /// returns>The exception thrown by the action/returns>
    public static Exception Throws(Action action)
    {
    return Throws(action, null);
    }

    /// summary>
    /// Executes an exception, expecting an exception to be thrown.
    /// Like Assert.Throws in NUnit.
    /// /summary>
    /// param name="action">The action to execute/param>
    /// param name="message">The error message if the expected exception is not thrown/param>
    /// returns>The exception thrown by the action/returns>
    public static Exception Throws(Action action, string message)
    {
    try
    {
    action();
    }
    catch (Exception ex)
    {
    // The action method has thrown the expected exception.
    // Return the exception, in case the unit test wants to perform further assertions on it.
    return ex;
    }

    // If we end up here, the expected exception was not thrown. Fail!
    throw new AssertFailedException(message ?? "Expected exception was not thrown.");
    }

    /// summary>
    /// Executes an exception, expecting an exception of a specific type to be thrown.
    /// Like Assert.Throws in NUnit.
    /// /summary>
    /// param name="action">The action to execute/param>
    /// returns>The exception thrown by the action/returns>
    public static T ThrowsT>(Action action) where T : Exception
    {
    return ThrowsT>(action, null);
    }

    /// summary>
    /// Executes an exception, expecting an exception of a specific type to be thrown.
    /// Like Assert.Throws in NUnit.
    /// /summary>
    /// param name="action">The action to execute/param>
    /// param name="message">The error message if the expected exception is not thrown/param>
    /// returns>The exception thrown by the action/returns>
    public static T ThrowsT>(Action action, string message) where T : Exception
    {
    try
    {
    action();
    }
    catch (Exception ex)
    {
    T actual = ex as T;
    if (actual == null)
    {
    throw new AssertFailedException(message ?? String.Format("Expected exception of type {0} not thrown. Actual exception type was {1}.", typeof(T), ex.GetType()));
    }

    // The action method has thrown the expected exception of type 'T'.
    // Return the exception, in case the unit test wants to perform further assertions on it.
    return actual;
    }

    // If we end up here, the expected exception of type 'T' was not thrown. Fail!
    throw new AssertFailedException(message ?? String.Format("Expected exception of type {0} not thrown.", typeof(T)));
    }
    }

    好了,现在我们在MsTest中可以这样了,看下面代码:
    复制代码 代码如下:

    [TestMethod]
     public void WriteToTextFile2()
    {
    //Implement Assert.Throws in MSTest
    ExceptionAssert.ThrowsArgumentNullException>(()=> PDFUtility.WriteToTextFile("D:\\ACA.pdf", null)
     ,"Output file path should not be null");
     }
     

    上一篇:ASP.NET MVC3 实现全站重定向的简单方法
    下一篇:使用pdfbox实现pdf文本提取和合并功能示例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    mstest实现类似单元测试nunit中assert.throws功能 mstest,实现,类似,单元,测试,