[英]How do I use Assert to verify that an exception has been thrown with MSTest?
[英]How to assert an exception has been thrown
我正在使用MOQ设置一个抛出InvalidOperationException
的方法。 然后我使用MSTest Assert.ThrowsException
断言该方法抛出指定的异常。 当我调试测试时,它会抛出异常,而不是断言已抛出预期的异常。
我搜索了这个,并没有提出与我的问题相关的例子。 我已经为方法添加了一个属性[ExpectedException(typeof(InvalidOperationException))]
但是我得到了相同的结果。 我已经尝试将抛出异常的代码移到Assert之外并进入它自己的代码行,但是我得到了相同的结果。 我没有尝试将代码包装到从测试方法调用的自己的方法中,因为我不明白如何将模拟对象作为参数传递给新方法(我将使用什么类型?编译器不会像Moq或MOQ)。
[TestClass]
public class UnitTest1
{
[ExpectedException(typeof(InvalidOperationException))]
[TestMethod]
public void TestMethod1()
{
var mock = new Mock<IFoo>();
// throwing when invoked with specific parameters
mock.Setup(foo =>
foo.DoSomething("reset")).Throws<InvalidOperationException>();
//mock.Object.DoSomething("reset");
Assert.ThrowsException<InvalidOperationException>(() =>
mock.Object.DoSomething("reset"));
}
}
感谢Kenneth K帮我看错。 根据我所看到的情况,我相信当你的意图是断言已抛出异常时,无法通过单元测试进行调试。 但是你可以运行测试并声明已抛出异常。 要使用MSTest正确设置测试以声明异常,请使用ExpectedExceptions属性。 虽然我假设它可能在某种情况下使用Assert.ThrowsException,但在单元测试的情况下,我无法使该方法工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.