Запуск отдельных методов тестирования 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.не..."который при запуске скажет "пустой набор тестов".

причина в том, что неправильно создано" имя теста". Измените конфигурацию запуска, чтобы использовать полную название: "календарь не должен..."или" календарь, когда пустой не должен иметь...- и это сработает. Кажется, проблема в разборе того, каким должно быть имя из кода.