Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何避免执行ScalaTest规范两次,当它';这是套房的一部分`_Scala_Integration Testing_Scalatest - Fatal编程技术网

如何避免执行ScalaTest规范两次,当它';这是套房的一部分`

如何避免执行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 { ... }

我正在使用ScalaTest集成测试一个Play框架应用程序。这个:
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,作为一种解决方法,我声明了suites
abstract
,然后ScalaTest忽略了它们。specs2也不查找“*Spec”,您可能会遇到与这里描述的相同的问题。这将通过多种方式解决,具体取决于您执行规范的方式(从sbt、从命令行等等)
class BrowserSuiteSpec extends Suites(new AnonLoginSpec {})

abstract class AnonLoginSpec extends FreeSpec { ... }