展会信息港展会大全

mstest实现类似单元测试nunit中assert.throws功能
来源:互联网   发布日期:2016-01-26 10:52:14   浏览:4547次  

导读:我们做单元测试NUnit中,有一个断言Assert Throws很好用,现在我们来扩展一下也实现类似成功能,大家参考使用吧我们做单元测试NUnit中,有一个断言Assert Throws很好用,但当我们使用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 Throws<T>(Action action) where T : Exception

{

return Throws<T>(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 Throws<T>(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.Throws<ArgumentNullException>(()=> PDFUtility.WriteToTextFile("D:ACA.pdf", null)

,"Output file path should not be null");

}

赞助本站

人工智能实验室

相关热词: nunit 单元测试 mstest

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港