首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使JUnit4生命周期回调在ScalaTest中与JUnitRunner一起工作?

如何使JUnit4生命周期回调在ScalaTest中与JUnitRunner一起工作?
EN

Stack Overflow用户
提问于 2015-10-03 02:09:51
回答 2查看 110关注 0票数 0

根据ScalaTest文档,可以使用JUnitRunner可以运行测试。我的假设是,如果它与JUnitRunner一起运行,那么它的回调方法(即标记为@Before@After注释的方法也应该可以工作)。但很明显我的假设是错误的。我创建了一个简单的例子来演示它:

代码语言:javascript
复制
import org.junit.Before
import org.junit.runner.RunWith
import org.scalatest.{FunSuite, _}
import org.scalatest.junit.JUnitRunner

@RunWith(classOf[JUnitRunner])
class Test extends FunSuite {

  @Before
  def before() = {
    println("before test")
  }

  test("nothing") {
    println("test is started")
  }
}

如果您运行这个示例,您将看到test is started行,而不是before test

我知道ScalaTest生命周期回调,但问题是我需要让JUnit回调以某种方式工作。我想为Play 2.4应用程序编写一个测试,它的play.test.WithBrowser类依赖于JUnit回调。我找到了解决这个问题的办法:

代码语言:javascript
复制
 var testBrowser : TestBrowser = _

 before {
   new WithBrowser {
     override def createBrowser(): Unit = {
       super.createBrowser()
       testBrowser = browser
     }
 }.createBrowser()

}

但我认为这是相当丑陋的,我怀疑有更好的方法。

因此,我的问题是,是否有可能使这些JUnit生命周期回调与ScalaTest一起工作?如果可能的话,怎么做呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-03 03:05:20

您应该能够使用JUnitSuite而不是FunSuite来完成这个任务。文件如下:

斯卡拉 http://doc.scalatest.org/2.2.4/index.html#org.scalatest.junit.JUnitSuite

票数 1
EN

Stack Overflow用户

发布于 2015-10-05 20:47:22

我就像诺亚建议的那样成功了。为了防止任何人在Play 2.x和WithBrowser中遇到同样的问题,我最终得到了这样的测试:

代码语言:javascript
复制
class IntegrationSpec extends WithBrowser with JUnitSuiteLike with Matchers {

  @Test def workWithBrowser() {
     browser.goTo("http://localhost:9000")
     browser.pageSource should include("Add Person")
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32918221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档