MSTest: как увеличить время тестирования - PullRequest
23 голосов
/ 05 ноября 2010

У меня есть один тест, который должен работать более 1 минуты (VS2008, MSTest, тесты запускаются из VisualStudio):

    const int TestTimeout = 1;

    [TestMethod]
    [Timeout(10*60*1000)] // 10 minutes
    public void Login_ExpirationFail_Test()
    {
        IAuthenticationParameters parameters = new AuthenticationParameters(...);
        LdapAuthentication auth1 = new LdapAuthentication();
        IAuthenticationLoginResult res = auth1.Login(parameters);

        Assert.IsNotNull(res);
        Assert.IsFalse(string.IsNullOrEmpty(res.SessionId));

        const int AdditionalMilisecodns = 400;
        System.Threading.Thread.Sleep((TestTimeout * 1000 + AdditionalMilisecodns) * 60);

        LdapAuthentication auth2 = new LdapAuthentication();
        auth2.CheckTicket(res.SessionId);
    }

Этот тест завершен в режиме «Выполнить», когда «Test 'Login_ExpirationFail_Test' превысил период ожидания выполнения». сообщение об ошибке в «Отладке» - работает нормально.

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

Как сделать мой тест работоспособным в режиме «Выполнить»?

Спасибо.

Ответы [ 3 ]

20 голосов
/ 10 ноября 2010

Ответ очень прост: значение атрибута должно быть константой, а не выражением.

Изменение

[Timeout(10*60*1000)]

до

[Timeout(600000)]

решена проблема.

РЕДАКТИРОВАТЬ: Комментарий к ответу привлек мое внимание к ошибке, которую я изначально сделал в ответе (записал «60000» в качестве значения времени ожидания). В моем исходном коде у меня есть 6000000, и это значение помогло. ответ был недавно исправлен

11 голосов
/ 23 февраля 2016

В дополнение к указанию количества секунд, Timeout() поддерживает константу, которая обеспечивает бесконечное ожидание.

[Timeout(TestTimeout.Infinite)]
0 голосов
/ 05 ноября 2010

Не конкретные шаги, но они должны указывать правильное направление:

Добавить тестовый файл настроек в решение, если у вас его еще нет.настройки теста и найдите настройку, управляющую временем ожидания теста.

...