在Scalatest中,我对使用Spec与WordSpec的优缺点有点不清楚.我认为javadoc提供了一定程度的WordSpec与FlatSpec的比较,但我不知道Spec和WordSpec.
如果您对这两种语法都感到满意,那么这将被视为"最佳实践"?
WordSpec是Spec的演变(如果有人认为BDD是TDD的进化)吗?或相反亦然?如果他们在这方面完全是平等的,为什么我会选择一个而不是另一个呢?
也许这是一个"宗教问题",但即使是每一方都必须至少有一些他们喜欢指出的优点和缺点.听到这些论点,我会很感兴趣.
如果这是常见问题解答,我提前道歉:我在搜索中找不到任何关于此比较的内容.
我有一个Scala类正在尝试实现一个Java接口(JavaEE 7中的EntityManager用于特定的单元测试).界面有这两种方法(其中包括):
public StoredProcedureQuery createStoredProcedureQuery(String procedureName, Class... resultClasses);
public StoredProcedureQuery createStoredProcedureQuery(String procedureName, String... resultSetMappings);
Run Code Online (Sandbox Code Playgroud)
在Scala实现中,我有:
override def createStoredProcedureQuery(procedureName: String, resultClasses: Class[_]*): StoredProcedureQuery = ???
override def createStoredProcedureQuery(procedureName: String, resultSetMappings: String*): StoredProcedureQuery = ???
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
MyTest.scala:134: error: double definition:
method createStoredProcedureQuery:(procedureName: String, resultSetMappings: String*)javax.persistence.StoredProcedureQuery and
method createStoredProcedureQuery:(procedureName: String, resultClasses: Class[_]*)javax.persistence.StoredProcedureQuery at line 133
have same type after erasure: (procedureName: String, resultSetMappings: Seq)javax.persistence.StoredProcedureQuery
override def createStoredProcedureQuery(procedureName: String, resultSetMappings: String*): StoredProcedureQuery = ???
Run Code Online (Sandbox Code Playgroud)
我无法想出一个解决方案.我的Google搜索也未能找到并回答.我正在使用Scala 2.10.4.
我的头衔可能并不是真的很好地描述了这个问题.对于我正在做的事情,我不需要这个问题的答案,我现在的事情是正确的,但是当我使用Scala组合器解析器时,我遇到了这个让我感到困惑的问题.我想更好地理解语言(我大部分时间都是Scala新手),所以我想我会看到是否有人可以向我解释这个:
这是代码:
package my.example
import scala.io.Source
import scala.util.parsing.input.StreamReader
import scala.util.parsing.combinator.lexical.StdLexical
import scala.util.parsing.combinator.syntactical.StandardTokenParsers
class DummyParser extends StandardTokenParsers
{
def scan
(
filename : String
) : Unit =
{
// Read in file
val input = StreamReader( Source.fromFile( filename ).bufferedReader )
// I want a reference to lexical in StandardTokenParsers
val mylexical = lexical
// Even if I put a type above like these two below it does not help
// val mylexical : StdLexical = lexical
// val mylexical : …Run Code Online (Sandbox Code Playgroud)