Как явно выйти из метода тестирования, управляемого данными в MSTest

Я использую функцию тестирования на основе данных в тестовой среде MS. Атрибут [DataSource] указывает таблицу. Метод C # отмечен как [TestMethod]. Это работает, но иногда мне нужно остановить выполнение. Например, в таблице 100 строк. Как явно (преждевременно) выйти из метода тестирования (остановить остальные вызовы DDT) после некоторого условия, скажем, при вызове этого метода для 50-й строки?

 [DataSource("System.Data.SQLite", @"Data Source=D:\Test.db;", "TestTableName", 
     DataAccessMethod.Sequential)]
     [TestMethod]
    public void DataTest()
    {
        string userId = Convert.ToString(TestContext.DataRow["userid"]);
        string telephone = Convert.ToString(TestContext.DataRow["telephone"]);
        string email = Convert.ToString(TestContext.DataRow["email"]);

        // .....

        functionThatPerformsAssert(userId, telephone, email);
        // .....

    }

person Vlad Novakovsky    schedule 12.05.2016    source источник
comment
Не могли бы вы показать код метода тестирования?   -  person Pedro G. Dias    schedule 12.05.2016
comment
Извините - не могу добавить производственный код. добавлен пример. но вряд ли код добавит информацию.   -  person Vlad Novakovsky    schedule 12.05.2016
comment
Итак, вы хотите выйти (как в случае прерывания) выполнения теста? Что вы (и тест MS) хотите, чтобы результат теста был успешным или нет? Если вы просто хотите, чтобы он завершился и завершился ошибкой, выбросьте исключение!   -  person Jocke    schedule 12.05.2016
comment
После неудачного утверждения тест должен быть помечен как неудачный, а следующие, скажем, 50 записей должны быть пропущены. Я не упомянул, что мне нужно выйти / завершить процесс, контролирующий выполнение теста. Итак, после того, как тест пропущен, ожидается нормальный поток - если есть какие-либо методы тестирования, поставленные в очередь для выполнения, они должны быть выполнены.   -  person Vlad Novakovsky    schedule 13.05.2016


Ответы (1)


Я решил эту проблему, вызвав Assert.Inconclusive из functionThatPerformsAssert (), где _skipTest определяет, пропускать ли текущую строку в тесте, управляемом данными, и начинать ли следующую строку:

if (_skipTest)
            Assert.Inconclusive("Test Skipped");
person Vlad Novakovsky    schedule 20.06.2016
comment
но когда я пробую это после первой итерации, останавливается только мой тестовый пример ... я использую это при инициализации теста. - person shrot; 09.03.2018