如何避免执行ScalaTest规范两次,当它';这是套房的一部分`
我正在使用ScalaTest集成测试一个Play框架应用程序。这个:如何避免执行ScalaTest规范两次,当它';这是套房的一部分`,scala,integration-testing,scalatest,Scala,Integration Testing,Scalatest,我正在使用ScalaTest集成测试一个Play框架应用程序。这个: org.scalatest.Suites(规范列表) 执行规范列表中的每个测试。但是如何避免每个规范也被独立执行呢?他们被处决了两次 例如: import org.scalatest.{Suites, FreeSpec} class BrowserSuiteSpec extends Suites(new AnonLoginSpec) class AnonLoginSpec extends FreeSpec { ... }
org.scalatest.Suites(规范列表)
执行规范列表中的每个测试。但是如何避免每个规范也被独立执行呢?他们被处决了两次 例如:
import org.scalatest.{Suites, FreeSpec}
class BrowserSuiteSpec extends Suites(new AnonLoginSpec)
class AnonLoginSpec extends FreeSpec { ... }
现在我的AnonLoginSpec
执行了两次–首先作为BrowserSuiteSpec的一部分,然后独立执行,因为它是一个FreeSpec类。(将AnonLoginSpec更改为trait会导致编译错误。)
将AnonLoginSpec
重命名为AnonLoginSpeX
没有任何效果-仍在执行两次。
(我认为ScalaTest可能在寻找“Spec”后缀,我认为Specs2就是这样做的。)
没有提到这个问题(据我所知)。如果您使用的是ScalaTest 2.0.M5或更高版本,则可以使用注释对每个套件进行注释。或者,您可以绕过发现,通过将-s MainSuite传递给ScalaTest运行程序来指定主套件类名。如果您使用的是2.0-M5之前的版本,那么您只需声明spec
abstract
,然后ScalaTest就会忽略它。所以我这样做了:(它是有效的;测试只在套件构造中运行)
(无论如何,我还是接受了mpilquist的回答(见上文),因为在2.0版中应该是这样工作的。)谢谢!实际上,我使用的是2.0-M4,作为一种解决方法,我声明了suitesabstract
,然后ScalaTest忽略了它们。specs2也不查找“*Spec”,您可能会遇到与这里描述的相同的问题。这将通过多种方式解决,具体取决于您执行规范的方式(从sbt、从命令行等等)
class BrowserSuiteSpec extends Suites(new AnonLoginSpec {})
abstract class AnonLoginSpec extends FreeSpec { ... }