Основные функции тестирования в SBT - PullRequest
7 голосов
/ 05 июня 2011

Как создать простой модульный тест для моего приложения, используя функцию тестирования SBT ?

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

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

1 Ответ

12 голосов
/ 07 июня 2011

Тестирование с 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 в пустой папке. Перейдите в автоматически созданную папку project и создайте новую папку сборки

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

перейдите во вновь созданную папку сборки и создайте свой первый файл сборки проекта Project.scala со следующим содержимым:

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 в каталоге вашего проекта и введите следующие команды:

set libraryDependencies + = "org.scala-tools.testing" %% "scalacheck"% "1.9"% "test" сохранение сеанса

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

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

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

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

Создание простого теста скалярной проверки

Создайте следующий тестовый файл src / test / scala / StringSpecification.scala (взято с домашней страницы 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.

...