Код: Выделить всё
class SomeClassUnitTest {
private val someClass = SomeClass()
@Test
fun exampleTest_SomeInput_ReturnsCorrectOuput() {
val input = "..."
val output = someClass.someFunction(input)
val expected = "---"
assertEquals(expected, output)
}
@Test
fun exampleTest_SomeInput_ReturnsCorrectOuput() {
val input = "---"
val output = someClass.someFunction(input)
val expected = "..."
assertEquals(expected, output)
}
}
Код: Выделить всё
@Test
fun exampleTest_SomeInputs_ReturnsCorrectOuputs() {
val input = listOf{ "...", "---" }
val output = listOf()
input.forEach { output += someClass.someFunction(input) }
val expected = listOf{ "---", "..." }
assertEquals(expected, output)
}
Я могу согласиться, если разрабатывать такой модульный тест неправильно. Мы теряем удобство имени тестовой функции, описывающего, почему модульный тест функции терпит неудачу. И я полагаю, что модульный тест можно перепроектировать, чтобы сообщить разработчику, какое конкретное значение не проходит тест. Что вы думаете?
Еще один аспект, который я хочу задать, касается эффективности модульного тестирования? Может ли более краткий модульный тест быть более производительным, чем отдельные тесты для каждого входного параметра?
Я знаю, что это не будет очевидно из приведенных мной примеров, так что, если функция примет немного времени, чтобы закончить? Я думаю, что весь список значений может быть инициирован асинхронно, и как только все ответы будут завершены, будет выполнено сравнение с ожидаемым результатом. Таким образом, метод модульного теста для отдельных входных данных как O(k*n) (где k — количество тестов, а n — время обработки) сводится к O(n ), которое теперь определяется самым длительным временем обработки списка значений.
Мне больше всего интересно, что сообщество обнаружило на собственном опыте. Я мог бы протестировать их самостоятельно, но меня беспокоит первый вопрос: «Должен ли я построить тест таким образом?» а второй — скорее бонус, поскольку в модульных тестах можно выполнять асинхронные операции.
Подробнее здесь: https://stackoverflow.com/questions/784 ... t-practice
Мобильная версия