如何依次运行多个[TestMethod]?

时间:2018-08-28 13:48:18

标签: c# unit-testing selenium

我在问如何运行多个测试方法,以便它们位于同一文件中。

例如,我具有此单元测试文件名

public class UniTest1
{
[TestMethod]
public void Login()

[TestMethod]
public void Logout()

[TestMethod]
public void SignIn()

[TestMethod]
public void ForgetPassword()

}

我希望他们按此顺序

Login()

注销()

ForgetPassword()

SignIn()

请澄清一下,我希望此订单检查此电子邮件是否已经存在

2 个答案:

答案 0 :(得分:0)

如果您将测试用例构造为包含该特定用例的设置,操作和断言的代码,则无需按任何特定顺序运行它们。一个很好的建议是不要在测试用例之间建立任何依赖关系,例如,您需要依赖“登录”测试才能在“注销”之前运行。而是在“注销”情况下设置测试代码将启动已登录的会话,并为“注销”操作发生做好准备。

如果发现多个测试用例共享相同的设置代码和拆卸代码,则可以在某些方法上使用TestInitialize和TestCleanup属性,例如:

namespace UserInteractionTests
{
    [TestClass]
    public class UserAuthenticationTestt
    {

        [TestInitialize]
        public void TestSetup()
        {
            /* Put your common initialization code here */
        }
        [TestMethod]
        public void AnAuthorizedUserCanLogin()
        {
            /* put your setup, action and assertion here
             from your system under test
            */
        }
        [TestMethod]
        public void ALoggedInUserCanLogOut()
        {
            /* put your setup, action and assertion here
             from your system under test
            */
        }

        [TestCleanup]
        public void TestCleanup()
        {
            /* Put your common teardown code here.. */
        }

    }
}

答案 1 :(得分:0)

您要设置一个包含多个步骤的大型测试,而不是四个专用测试。

这里有个例子:

public class UniTest1
{
    [TestMethod]
    public void LoginSuccess()
    {
        // Try to Log in
        o.Login("user", "pw");
        Assert.AreEqual(true, o.ImLoggedIn);
    }
    [TestMethod]
    public void LoginWrongPw()
    {
        // Try to Log in
        o.Login("user", "wrongpw");
        Assert.AreEqual(false, o.ImLoggedIn);
    }

    [TestMethod]
    public void LogOutSuccess()
    {
        // Login
        o.Login("user", "pw");
        // Check if steup is completed
        Assert.AreEqual(true, o.ImLoggedIn);

        bool ok = o.LogOut();
        Assert.AreEqual(true, ok);
    }

    [TestMethod, ExpectedException(NotLoggedInException)]
    public void LogOutNoLogout()
    {
        // Try to Log in
        Assert.AreEqual(false, o.ImLoggedIn);
        bool ok = o.LogOut();
    }
}

如您所见,每个测试都独立于其他测试。

如果您需要注销测试,则必须为其设置环境,而不是“希望”其他测试如此。