В общем, когда вы определяете класс или объект, вы должны написать тесты для методов, которые должен вызывать кто-либо, использующий этот класс, а другие методы должны быть закрытыми.Если вы захотите сделать методы общедоступными, просто для того, чтобы их можно было тестировать, рассмотрите возможность их перемещения в отдельный класс или объект.
Существует множество стилей тестирования, поддерживаемых scala test.Лично мне нравится WordSpec
.Выполняемый базовый тест будет выглядеть следующим образом:
class MyTest extends WordSpec with Matchers {
"My Object" should {
"process descriptors" when {
"there is one input" in {
val input = List("2010 Ford Mustang")
val output = MyObject.descriptorProcessing(input)
output should have length 1
output.head shouldBe()
}
"there are two inputs" in pendingUntilFixed {
val input = List("Abraham Joe Lincoln, 34, President",
"George Ronald Washington, 29, President")
val output = MyObject.descriptorProcessing(input)
output should have length 2
output.head shouldBe()
}
}
"format descriptors" when {
"there is one input" in pending
}
}
}
Я использовал две функции скалярного разрешения, включающие TDD: pendingUntilFixed
и pending
.
pendingUntilFixed
позволяетнаписать тест для кода, который еще не был реализован или еще не работает правильно.Пока утверждение в тесте не выполняется, тест игнорируется и отображается желтым цветом.Как только все утверждения пройдены, тест не пройден, и вы узнаете, что можете его включить.Это включает TDD, в то же время позволяя вашей сборке пройти до того, как работа будет завершена.
pending
- это маркер, говорящий: «Я собираюсь написать тест для этого, но я еще не получил его»,Я часто этим пользуюсь, так как это позволяет мне написать план моих тестов, а затем вернуться и заполнить их.