Как запустить несколько [TestMethod] по порядку? - PullRequest
0 голосов
/ 28 августа 2018

Я спрашиваю, как запустить несколько методов тестирования, чтобы они были в одном файле.

Например, у меня есть это имя файла Unit Test

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

[TestMethod]
public void Logout()

[TestMethod]
public void SignIn()

[TestMethod]
public void ForgetPassword()

}

Я хочу их в следующем порядке:

Войти ()

Выход ()

ForgetPassword ()

для входа в аккаунт ()

Просто чтобы уточнить, я хочу, чтобы этот заказ проверял, существует ли это письмо или нет

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Вы настраиваете один большой тест с несколькими шагами, но не четырьмя выделенными тестами.

Вот пример:

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();
    }
}

Как видите, каждый тест независим от других.

Если вам нужен тест выхода из системы, вы должны настроить для него среду, а не «надеяться», что другие тесты будут так делать.

0 голосов
/ 28 августа 2018

Если вы структурируете свои тестовые наборы так, чтобы они содержали код для настройки, действий и утверждений для этого конкретного случая, вам не нужно запускать их в каком-либо конкретном порядке. Хорошим советом было бы стремиться к тому, чтобы не было никаких зависимостей между тестовыми примерами, например, вы должны зависеть от теста "Login", который выполнялся до "LogOut". Вместо этого настройка тестового кода в случае «LogOut» инициирует зарегистрированный сеанс и устанавливает этап для действия «LogOut».

Если вы обнаружите, что несколько тестовых примеров используют общий код установки и код разрыва, вы можете использовать свойства 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.. */
        }

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...