我正在尝试制作自己的自定义CSV阅读器。我正在使用带有 sbt 和 specs2 测试框架的 IntelliJ IDEA 14。
我在src/main
中声明的类如下:
import java.io.FileInputStream
import scala.io.Source
class CSVStream(filePath:String) {
val csvStream = Source.fromInputStream(new FileInputStream(filePath)).getLines()
val headers = csvStream.next().split("\,", -1)
}
src/test
测试文件的内容如下:
import org.specs2.mutable._
object CSVStreamSpec {
val csvSourcePath = getClass.getResource("/csv_source.csv").getPath
}
class CSVStreamSpec extends Specification {
import CSVStreamLib.CSVStreamSpec._
"The CSV Stream reader" should {
"Extract the header" in {
val csvSource = CSVStream(csvSourcePath)
}
}
}
build.sbt
文件包含以下内容:
name := "csvStreamLib"
version := "1.0"
scalaVersion := "2.11.4"
libraryDependencies ++= Seq("org.specs2" %% "specs2-core" % "2.4.15" % "test")
parallelExecution in Test := false
键入测试时遇到的错误如下:
[error] /Users/raiyan/IdeaProjects/csvStreamLib/src/test/scala/csvStreamSpec.scala:18: not found: value CSVStream
[error] val csvSource = CSVStream(csvSourcePath)
[error] ^
[error] one error found
[error] (test:compile) Compilation failed
[error] Total time: 23 s, completed 30-Dec-2014 07:44:46
如何使测试文件中的 CSVStreamSpec 类可以访问 CSVStream 类?
更新:
我在命令行中使用 sbt 尝试过。结果是一样的。
您忘记了new
关键字。如果没有它,编译器将查找名为 CSVStream
的伴随对象,而不是类。既然没有,它就抱怨。添加new
,它就会起作用。