Chr*_*ris 4 c# testing unit-testing
在下面的测试中,如果它进入catch块,我想表明测试已经过去了.如果绕过catch块我希望测试失败.
有没有办法做到这一点,或者我错过了如何构建测试的重点?
[TestMethod]
public void CommandExecutionWillThrowExceptionIfUserDoesNotHaveEnoughEminence()
{
IUserCommand cmd = CreateDummyCommand("TEST", 10, 10);
IUser user = new User("chris", 40);
try
{
cmd.Execute(user);
}
catch(UserCannotExecuteCommandException e)
{
//Test Passed
}
// Test Failed
}
Run Code Online (Sandbox Code Playgroud)
当我遇到类似的情况时,我倾向于使用这种模式:
// ...
catch (UserCannotExecuteCommandException e)
{
return; // Test Passed
}
Assert.Fail(); // Test Failed -- expected exception not thrown
Run Code Online (Sandbox Code Playgroud)
声明测试以抛出UserCannotExecuteCommandException,当发生这种情况时,测试将成功
[ExpectedException( typeof( UserCannotExecuteCommandException) )]
Run Code Online (Sandbox Code Playgroud)