Upio Upio - 1 month ago 9
Scala Question

Specs2 "value in is not a member of String"

I cannot compile the simple specs2 hello world example:

import org.junit.runner.RunWith
import org.specs2.Specification
import org.specs2.runner.JUnitRunner

import org.specs2.mutable._

@RunWith(classOf[JUnitRunner])
class SampleTest extends Specification {

"The 'Hello world' string" should {
"contain 11 characters" in {
"Hello world" must have size(11)
}
"start with 'Hello'" in {
"Hello world" must startWith("Hello")
}
"end with 'world'" in {
"Hello world" must endWith("world")
}
}
}


Getting error:


:compileTestScala [ant:scalac] Element '/home/~~~~/workspaces/~~~~/build/resources/main' does not exist.

[ant:scalac] /home/~~~~/workspaces/~~~~/src/test/scala/com/~~~~/ingestion/SampleTest.scala:16:
error: value in is not a member of String

[ant:scalac] "contain 11 characters" in {

[ant:scalac] one error found

:compileTestScala FAILED


I'm using Gradle (hence the @RunWith annotation). Using specs2 version 'org.specs2:specs2_2.10:2.4.15'

apply plugin: 'java'
apply plugin: 'scala'

repositories {
mavenCentral()
maven {
url "http://dl.bintray.com/scalaz/releases"
}
}

configurations {
provided
compile.extendsFrom provided
}

dependencies {
provided 'org.apache.hadoop:hadoop-client:2.2.0'

compile 'org.scala-lang:scala-library:2.10.0',
'com.twitter:scalding-core_2.10:0.12.0',
'com.github.scopt:scopt_2.10:3.2.0',
'org.json4s:json4s-jackson_2.10:3.2.11',

'args4j:args4j:2.0.29',
'joda-time:joda-time:2.4',
'log4j:log4j:1.2.17',
'org.apache.commons:commons-compress:1.9',
'org.apache.commons:commons-lang3:3.3.2',
'org.codehaus.jackson:jackson-core-asl:1.9.13'


testCompile 'junit:junit:4.11',
'org.mockito:mockito-all:1.9.5',
'org.specs2:specs2_2.10:2.4.15'
}

jar {
dependsOn configurations.runtime
from {
(configurations.compile - configurations.provided).collect {
it.isDirectory() ? it : zipTree(it)
}
}
}

Answer

you need to extend org.specs2.mutable.Specification instead of org.specs2.Specification for that syntax.

Comments