手机
当前位置:查字典教程网 >编程开发 >asp.net教程 >mstest实现类似单元测试nunit中assert.throws功能
mstest实现类似单元测试nunit中assert.throws功能
摘要:我们做单元测试NUnit中,有一个断言Assert.Throws很好用,但当我们使用MsTest时你需要这样写:复制代码代码如下:[Test...

我们做单元测试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");

}

【mstest实现类似单元测试nunit中assert.throws功能】相关文章:

asp.net生成静态页并分页+ubb第1/2页

ASP.net中实现基于UrlRewrite的防盗链功能

DataList绑定到Row[]行集合的问题的方法

用程序修改IIS目录的Asp.Net版本

asp.net水晶报表参数字段在代码中赋值的方法

ASP.net基础知识之常见错误分析

asp.net生成高质量缩略图通用函数(c#代码),支持多种生成方式

ASP.NET中使用Application对象实现简单在线人数统计功能

asp.net导出EXCEL的功能代码

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

精品推荐
分类导航