明确设置测试通过/失败?

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)

Cam*_*ron 8

当我遇到类似的情况时,我倾向于使用这种模式:

// ...
catch (UserCannotExecuteCommandException e)
{
    return;    // Test Passed
}

Assert.Fail();    // Test Failed -- expected exception not thrown
Run Code Online (Sandbox Code Playgroud)


Orn*_*son 6

声明测试以抛出UserCannotExecuteCommandException,当发生这种情况时,测试将成功

[ExpectedException( typeof( UserCannotExecuteCommandException) )]
Run Code Online (Sandbox Code Playgroud)

  • @Chris:运行测试*而不用*调试(CTRL R,T) (2认同)