2016-11-22 12 views
0

私のJUnitコードで(自分のデータを含む)ファイルを読み込もうとしています。JUnitで別のパッケージのファイルコンテンツを読み取る

私は "テスト" という名前のソースフォルダがあり、その下に

com.junit.codes(JUnitのコード)

com.junit.codes.data(CSVファイルの下の2つのパッケージですie myData.csv)

私の問題は、com.junit.codes.dataの下のファイルにアクセスできません。

classLoaderを使用しようとしましたが、動作しません。

誰でもこの問題を解決できますか?

+0

Iは、()のgetResource( "/ myData.csv")とのgetClass()のgetResource( "/データ/ myData.csv")のgetClassを試みたが、両方ありません動作していないようです。 – jaypax123

+0

このPaths.get( "com/junit/codes/data/myData.csv")を試してください。まだエラーがある場合は、スタックトレースで、どのパスを調べようとしたかを追跡します。 – grsdev7

+0

'data/myData.csv'または'/com/junit/codes/data/MyData.csv'はどうですか? 'getClass()。getResource()'は現在のクラスのパスに相対的でなければなりません。 –

答えて

0

次の操作を行い、あなたはMavenのベースのセットアップを使用していると仮定:

  1. 非Javaファイルとして、デフォルトでは、あなたのcsvファイルを追加する必要があり、「コンパイル」フェーズでは「ターゲット」フォルダにコピーされていません-src/test/resources/com/junit/codes/data
  2. テストクラスから、getClass().getResourceAsStream("./data/myData.csv")を実行して、入力ストリームを開いてデータを読み取ることができるはずです。

package com.junit.codes; 
import org.junit.Test; 
import java.io.InputStream; 
import static org.junit.Assert.assertNotNull; 

public class ReadTest { 
    @Test 
    public void name() throws Exception { 
     try(final InputStream inputStream = getClass().getResourceAsStream("./data/myData.csv")) { 
      assertNotNull(inputStream); 
     } 
    } 
} 
+0

OPは最新のコメントごとにMavenを使用していません。 –

+0

あなたが使用しているビルドメカニズムが実際に.class-filesと同じ "target"/"classes"フォルダにファイルをコピーしていることを確認しても、とにかく動作するはずです。 – Zapodot

+1

もっと一般的には、コピーしてもしなくても。とにかく、あなたの前提が正しくないことを伝えたいだけでした。 –

関連する問題