Scastie - это интерактивная игровая площадка для Scala, которая является быстрым способом начать работу. Например, вставьте следующее в редактор и нажмите кнопку Save
def func(ls: List[Boolean]): Boolean = ls match {
case Nil => false
case l::ls => l != func(ls)
}
func(List(true, false, true))
должен оценить func
и показать результат встроенным, как это
func(List(true, false, true)) // false: Boolean
Также попробуйте println(func(List(true, false, true)))
Еще один способ проверить ожидаемый результат без необходимости его распечатки - использовать утверждения типа
assert(func(List(true, false, true)) == false)
Чтобы преобразовать приведенное выше утверждение в реальный модульный тест, мы могли бы создать приложение из шаблона Scala Giter8 примерно так
sbt new scala/scala-seed.g8
, которая устанавливает всю мебель, необходимую для быстрого запуска и тестирования приложений. Затем добавьте func
к src/main/scala/example/Hello.scala
примерно так
object Hello extends App {
def func(ls: List[Boolean]): Boolean = ls match {
case Nil => false
case l::ls => l != func(ls)
}
}
и добавьте соответствующие юнит-тесты к src/test/scala/example/HelloSpec.scala
примерно так
class HelloSpec extends FlatSpec with Matchers {
"func" should "return false on List(true, false, true)" in {
Hello.func(List(true, false, true)) shouldEqual false
}
it should "return false on empty list" in {
Hello.func(List()) shouldEqual false
}
// add further tests here
}
Теперь выполнение sbt test
должно вывести
[info] HelloSpec:
[info] func
[info] - should return false on List(true, false, true)
[info] - should return false on empty list
[info] Run completed in 127 milliseconds.
[info] Total number of tests run: 2
[info] Suites: completed 1, aborted 0
[info] Tests: succeeded 2, failed 0, canceled 0, ignored 0, pending 0
[info] All tests passed.