Использование simple-build-tool для тестов - PullRequest
3 голосов
/ 19 октября 2010

Я пытаюсь заставить sbt скомпилировать и построить несколько тестов.Я сказал ему добавить тесты в путь тестирования, чтобы они перекомпилировались вместе с тестами, но я не могу понять, как написать действие, позволяющее мне на самом деле запустить их.Можно ли вызывать классы из класса определения Project или даже просто из командной строки?

Ответы [ 2 ]

4 голосов
/ 19 октября 2010

Да, это так.

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

  lazy val benchmark = task {
    // code to run benchmarks
    None // Some("will return an error message")
  }

Ввод benchmark в консоли SBT запустит задачу выше. Чтобы на самом деле запустить тесты или, если на то пошло, любой другой класс, который вы скомпилировали, вы можете повторно использовать часть существующей инфраструктуры SBT, а именно метод runTask, который создаст задачу, которая что-то для вас запускает. Имеет следующую подпись:

 def runTask(mainClass: => Option[String], classpath: PathFinder, options: String*): Task

Просто добавьте в ваш файл следующее:

  lazy val benchmark = task { args =>
    runTask(Some("whatever.your.mainclass.is"), testClasspath, args)
  }

При выполнении тестов иногда рекомендуется запускать их в отдельном вызове jvm, чтобы получить более надежные результаты. SBT позволяет запускать отдельные процессы, вызывая метод ! для строковой команды. Скажем, у вас есть команда java -jar path-to-artifact.jar, которую вы хотите запустить. Тогда:

"java -jar path-to-artifact.jar" !

запускает команду в SBT. Вы хотите поместить фрагмент выше в отдельное задание, как и ранее.

И не забудьте reload при изменении определения проекта.

2 голосов
/ 19 октября 2010

Не могли бы вы просто написать тесты в виде тестов, чтобы они запускались, когда вы вызываете 'test' в SBT?

Вы также можете запустить определенный тест с помощью 'test-only' или запуститьосновной с «run» или «exec» (подробности см. http://code.google.com/p/simple-build-tool/wiki/RunningSbt).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...