Я хочу провести модульное тестирование некоторых функций, связанных с пользовательским интерфейсом (Excel здесь). Я мог бы смоделировать весь пользовательский интерфейс, но это намного больше, чем просто визуальный осмотр результата, полученного несколькими тестируемыми функциями, которые я sh проверял.
Теперь эти тесты включают запуск Excel, а затем Появляется окно сообщения и спрашивает тестировщика, следует ли считать тест успешным или неудачным. Я хорошо знаю, что это плохая практика (каждый модульный тест должен быть детерминированным c, тогда как ответ от тестера явно нет; модульные тесты должны быть быстрыми, в то время как запуск Excel и ожидание ответа тестера - нет; et c). Решение о тестировании, как я только что описал, - это прагматическое c, поскольку оно означает обмен очень быстрого решения на то, что в противном случае было бы ужасно большой головной болью.
Очевидно, я не хочу запускать эти 2-3 теста каждый раз, когда я запускаю большинство моих модульных тестов (300 нет). Поэтому я надеялся, что смогу использовать директивы условной компиляции, чтобы запускать или не запускать эти дополнительные тесты; что-то вроде следующего:
<TestMethod()>
Public Sub MyFunction_ShouldDoSomething_WhenSomethingElse()
#If DEBUG Then
Assert.Inconclusive("UX tests are skipped when the active configuration is DEBUG.")
#End If
... some operations involving opening Excel ...
If vbNo = MsgBox("Does the data display as expected?", vbYesNo) Then Assert.Fail("Tester invalidated UX test.")
End Sub
Жаль, похоже, что юнит-тесты на самом деле запускаются только тогда, когда конфигурация решения отлажена. Каковы альтернативы, кроме добавления новой константы компиляции в сторону DEBUG ?