您的位置
主页 > 网站技术 > 语言编程 > » 正文

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

来源: 站长圈 点击:

复制代码 代码如下:

[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");

 }




首页  - 关于站长圈  - 广告服务  - 联系我们  - 关于站长圈  - 网站地图  - 版权声明