Запуск отдельных методов тестирования ScalaTest в IntelliJ IDEA
можно запустить один выбранный метод теста JUnit в IntelliJ IDEA 12, однако это, похоже, невозможно с помощью ScalaTest. Вы можете запустить весь тестовый класс или ничего, но, похоже, нет более тонкого зернистого контроля для ScalaTest (пока) в IntelliJ IDEA 12. (Я еще не пробовал идею 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{
}
}
4 ответов
Я использую IntelliJ IDEA 13, и я могу запускать один тест, когда я использую FunSuite
- поместите курсор в тест и нажмите Alt + Shift + Ф10 и тест есть. Это невозможно с FlatSpec
тесты.
он был добавлен недавно, и я помню, что он не работал в версии 12 даже для FunSuite
.
вы можете создать конфигурацию запуска для конкретного теста flatspec, поместив курсор в тест, и в меню Выполнить выберите Run...
(опция + Shift+F10 на mac), а в верхней части будет запись для конкретного теста.
вы можете вручную создать конфигурацию запуска, выбрав свой тестовый класс как обычно, а затем скопировав имя теста ("foo" в "foo" should "bar" in...
) в Test Name
поле
У меня была та же проблема. Он появляется, если у вас есть место в первом слове
"test " should "..."
когда я удалил пространство, тест начинает работать
комментарий к вышесказанному: скажем, это ваш тестовый набор:
"A calendar" should {
"not have any availability" in {...}
}
или
"A calendar" when {
"empty" should {
"not have any availability" in {... }
}
}
Если вы щелкните правой кнопкой мыши на второй (или третьей) строке (или используйте ярлыки в других ответах: Alt Shift F10 или option+Shift+F10 на mac), IntelliJ даст вам возможность создать конфигурацию запуска "Spec.не..."который при запуске скажет "пустой набор тестов".
причина в том, что неправильно создано" имя теста". Измените конфигурацию запуска, чтобы использовать полную название: "календарь не должен..."или" календарь, когда пустой не должен иметь...- и это сработает. Кажется, проблема в разборе того, каким должно быть имя из кода.