Выполнение индивидуальных тестовых методов ScalaTest в IntelliJ IDEA
В IntelliJ IDEA 12 можно запустить один выбранный тестовый метод JUnit, однако это не представляется возможным с помощью ScalaTest. Вы можете запустить весь тестовый класс или ничего, но, похоже, в IntelliJ IDEA 12 нет более тонкого элемента управления ScalaTest (пока еще не пробовал IDEA 13).
Итак, вопрос:
Есть ли способ выполнить только один выбранный тестовый метод ScalaTest в IntelliJ (как это возможно с помощью методов тестирования JUnit.)
Ниже приведен пример кода, методы тестирования которого я хотел бы запустить отдельно в IntelliJ. Любая идея, как это сделать?
Я пробовал JUnitRunner, но это не помогло.
class NodeDAOTest extends FlatSpec with SessionAware with BeforeAndAfter {
before{ IM3_SessionFactory.removeData
println("before is running")}
println("NodeDAOTest constructor.")
def numberOfNodes=initAndCloseDB(transaction{NodeDAO.numberOfNodes})
"Node" can "be added to DB and removed." in {
val n =new TextNode
assert(numberOfNodes===0)
initAndCloseDB { transaction{session save n}}
assert(numberOfNodes===1)
initAndCloseDB { transaction{deleteNode(n)}}
assert(numberOfNodes===0)
}
def getTag= initAndCloseDB {transaction{ session.createQuery("from Tag").list().get(0).asInstanceOf[Tag]}}
def getNode=initAndCloseDB {transaction{ session.createQuery("from Node").list().get(0).asInstanceOf[Node]} }
it can "be tagged and untagged" in {
val t=new Tag
val n=new TextNode
assert(numberOfNodes==0,"before adding one tag (and Node), there should be 0 Node in the DB")
initAndCloseDB{ transaction {addTag(t,n) }}
assert (getNode.getNumberOfTags===1)
assert (getTag.getNodes.size===1)
initAndCloseDB(transaction{removeTag(t,n)})
assert (numberOfNodes==1,"after removing the tag, there should be 1 Node in the DB")
assert (getNode.getNumberOfTags===0)
assert (getTag.getNodes.size===0)
}
"Tagged Node" can "be removed." in {
val f=new TagAndNodeFixture
assert(numberOfNodes==1)
initAndCloseDB{ transaction {addTag(f.t,f.n) }}
initAndCloseDB { transaction{deleteNode (f.n)} }
assert(numberOfNodes==0)
// the tag will be removed from the node
}
"Tag" can "be deleted and that will be removed from in-memory Nodes" in{
}
}
Ответы
Ответ 1
Я использую IntelliJ IDEA 13, и я могу запустить одиночный тест, когда я использую FunSuite
- поместите курсор в тест и нажмите Alt + Shift + F10, и тест есть. Это невозможно с тестами FlatSpec
.
Он был добавлен недавно, и я помню, что он не работал в версии 12 даже для FunSuite
.
Ответ 2
Вы можете создать конфигурацию запуска для определенного теста flatspec, поместив курсор в тест, и в меню "Выполнить" выберите Run...
(опция + Shift + F10 на Mac), а рядом с верхней частью будет запись для конкретный тест.
Вы можете вручную создать конфигурацию запуска, выбрав обычный тестовый класс, а затем скопировав имя теста ( "foo" в "foo" should "bar" in...
) в поле Test Name
Ответ 3
У меня была та же проблема. Он появляется, если у вас есть место в первом слове
"test " should "..."
Когда я удаляю место, тест начинает запускать
Ответ 4
Комментарий к выше сказанному: скажите, что это ваш тестовый набор:
"A calendar" should {
"not have any availability" in {...}
}
или
"A calendar" when {
"empty" should {
"not have any availability" in {... }
}
}
Если вы щелкните правой кнопкой мыши на второй (или третьей) строке (или используйте ярлыки в других ответах: Alt Shift F10 или опция + Shift + F10 на Mac) IntelliJ предоставит вам возможность создать конфигурацию запуска "Spec.not...", который при запуске скажет "Empty test suite".
Причина в том, что "тестовое имя" создано неправильно. Измените конфигурацию запуска, чтобы использовать полное имя: "Календар не должен иметь..." или "Календарь, когда пустой не должен быть...", и он будет работать. Кажется, проблема связана с тем, что имя должно быть из кода.