在IntelliJ IDEA中运行各个ScalaTest测试方法

jhe*_*dus 20 testing junit intellij-idea scalatest

可以在IntelliJ IDEA 12中运行单个选定的JUnit测试方法,但是ScalaTest似乎无法做到这一点.你可以运行整个测试类,或者什么都没有,但是在IntelliJ IDEA 12中似乎没有更好的控制ScalaTest(我还没有尝试过IDEA 13.)

所以,问题是:有没有办法在IntelliJ中只执行一个选定的ScalaTest测试方法(就像使用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{

  }



}
Run Code Online (Sandbox Code Playgroud)

Fra*_*man 14

我使用IntelliJ IDEA 13,我可以在使用时运行单个测试FunSuite- 将光标放在测试中并按Alt+ Shift+ F10然后测试就在那里.FlatSpec测试是不可能的.

它最近被添加,我记得它甚至没有在版本12中工作FunSuite.

  • 真?它确实给了我选项,但是当我尝试时,spec类上的所有测试运行我尝试但我只获得所有高级别分组(应该,何时),但没有运行实际测试.它说"空测试套件".我的测试看起来像这样:``'一天的安装'应该{"不会超过一天结束时间(1440分钟)"{val calendar = emptyCalendar calendar!新设置(DateTimeZone.UTC,Map(1 - > Seq(新段(2240,1))))断言(receiveOne(responseTime).isInstanceOf [Failure])}` (5认同)
  • 这现在也适用于FlatSpec.Mac上的命令是Control-Option-"R"或搜索"Run ..." (2认同)

Dae*_*yth 7

您可以通过将光标置于测试中来生成特定flatspec测试的运行配置,并从运行菜单中选择Run...(mac上的选项+ Shift + F10),并且靠近顶部将是特定测试的条目.

您可以通过正常选择测试类来手动生成运行配置,然后将测试名称("foo"中"foo" should "bar" in...)复制到Test Name字段中


And*_*rey 5

我有同样的问题.如果你在第一个单词中有空格,它会显示出来

"test " should "..."
Run Code Online (Sandbox Code Playgroud)

当我删除空间时,测试开始运行