Основные функции тестирования в SBT

Как создать простой тест для моего приложения с помощью SBT'ы?

Я надеюсь, что ответ заключается в том, что я могу написать один файл в src/test/scala для моего проекта, который импортирует специальный пакет тестирования из SBT, что делает написание тестов так же просто, как написание одного метода.

учебник ExampleSbtTest кажется, делает что-то более сложное, чем то, что мне нужно, и я не могу найти ничего проще the SBT GoogleCode страница.

1 ответов


тестирование с помощью SBT

независимо от того, какую версию SBT вы хотите использовать, в основном вы должны сделать следующие шаги:

  1. включите желаемую платформу тестирования в качестве тестовой зависимости в конфигурацию проекта.
  2. создайте специальную папку тестирования в дереве источника, обычно src / test / scala, если его еще нет.
  3. как всегда: напишите свои тесты, спецификации ...

эти основные шаги идентичны для ветви sbt 0.7 (это один из google-кода) и текущей ветви sbt 0.10 (теперь разработанной и документированной на github). Однако существуют незначительные различия в определении зависимостей тестирования, поскольку 0.10 предоставляет новый метод быстрой конфигурации, отсутствующий в 0.7.

определение зависимости для SBT 0.7

вот как вы создаете базовый тест (на основе scalacheck) с sbt 0.7. Создайте новый проект sbt 0.7, вызвав sbt в пустой папке. Перейдите в автоматически созданное проект и создать новую папку

# cd [your-project-root]/project
# mkdir build

перейдите во вновь созданную папку сборки и создайте свой первый файл сборки проекта .скала!--16--> с содержанием follwing:

class Project(info: ProjectInfo) extends DefaultProject(info) {

    val scalacheck = "org.scala-tools.testing" %% "scalacheck" % "1.9" % "test"

}

поскольку для 0.7 папка тестирования создается автоматически, вы можете сразу начать писать свой первый тест. Шаг пункт "Создать простой тест".

определение зависимости для SBT 0.10

для 0.10 можно использовать консоль sbt для добавления зависимости. Просто запустите sbt в каталоге проекта и введите следующие команды:

установить libraryDependencies + = " org.скала-инструменты.тестирование "% % "scalacheck" % " 1.9 " % " тест" сохранить сеанс

затем вы можете закрыть консоль sbt и посмотреть на свои проекты построить.sbt. Как вы можете легко обнаружить выше libraryDependencies линия была добавлена к вашим проектам быстрой конфигурации.

С 0.10 не создает исходные папки автоматически. Вы должны создать папку тестирования самостоятельно:

# cd [project-root]
# mkdir -p src/test/scala

это все, что нужно, чтобы начать с 0.10. Более того, документация о тестировании с 0.10 гораздо более подробная, чем старая. Вижу тестирование wiki страница для дальнейшего подробности.

создать простой тест scalacheck

создайте следующий тестовый файл src / test/scala / StringSpecification.скала!--16--> (взято с домашней страницы scalacheck):


import org.scalacheck._

object StringSpecification extends Properties("String") {
   property("startsWith") = Prop.forAll((a: String, b: String) => (a+b).startsWith(a))

   property("endsWith") = Prop.forAll((a: String, b: String) => (a+b).endsWith(b))

    // Is this really always true?
    property("concat") = Prop.forAll((a: String, b: String) => 
        (a+b).length > a.length && (a+b).length > b.length
    )

    property("substring") = Prop.forAll((a: String, b: String) => 
        (a+b).substring(a.length) == b
    )

    property("substring") = Prop.forAll((a: String, b: String, c: String) =>
        (a+b+c).substring(a.length, a.length+b.length) == b
    )
}

как уже указывалось, эта базовая проверка не будет выполнена для спецификации "concat", но это основные шаги тестирования, необходимые для начала тестирования и sbt. Просто адаптируйте включенную зависимость, если хотите использовать другое тестирование рамки.

выполнить тесты

чтобы запустить тест, откройте консоль sbt и введите

> test

это будет запускать все тесты, присутствующие в вашем src / test дерево независимо от того, являются ли они тестами на основе java или scala. Таким образом, вы можете легко повторно использовать существующие модульные тесты java и конвертировать их шаг за шагом в scala.