3

テストのために、インメモリ NIOFileSystem実装 ( memoryfs ) を使用しています。私は以前にそれを利用したことがあり、Maven などで問題なく動作するようです。

ただし、現在、SBT プロジェクトでは、新しい を初期化することはできませんFileSystem

問題を再現するための最小限の SBT 構成を次に示します。

import sbt._
import Keys._

name := "testfs"
organization := "com.example
version := "0.1-SNAPSHOT"

scalaVersion := "2.11.6"

libraryDependencies ++= { 
  val scalaTestVersion = "2.2.5"
  Seq(
    "org.scalatest" %% "scalatest" % scalaTestVersion % "test",
    "org.mockito" %  "mockito-core" % "1.10.19" % "test",
    "de.pfabulist.lindwurm" %  "memoryfs" % "0.28.3"   % "test"
  )}

そして、ここにテストがあります:

import de.pfabulist.lindwurm.memory.MemoryFSBuilder
import org.scalatest.{FlatSpec, MustMatchers}


class FsDummySpec extends FlatSpec with MustMatchers {

  it must "init the FS" in {
    new MemoryFSBuilder().watchService(true).name("testFs").build() //init here
  }
}

実行sbt testすると、次のようになります。

[info] FsDummySpec:
[info] - must init the FS *** FAILED ***
[info]   java.nio.file.ProviderNotFoundException: Provider "memoryfs" not found
[info]   at java.nio.file.FileSystems.getFileSystem(FileSystems.java:224)
[info]   at de.pfabulist.kleinod.paths.Pathss.getOrCreate(Pathss.java:76)

問題は次のとおりです。これは問題なく実行されるはずです。私の質問は:なぜ、どのように修正するのですか?

カスタム FS プロバイダーのドキュメントを一瞥すると、SBT が何らかの形でクラスパスを中断しているように見えますが、その理由を説明するのは困難です。

注:興味深いことに、IntelliJ IDEA のテスト ランナーは問題なく動作しているように見えます。問題はコマンド ライン (「SBT 固有」) のみにあります。

4

1 に答える 1