ユニットテストを実行したいが、私はorg.apache.hadoop.fs.FileSystemインスタンスを持っている必要がある。 FileSystemを作成するためのモックその他のソリューションはありますか?Hadoop:ユニットテストの方法FileSystem
答えて
あなたはHadoopの2.0.0を使用している場合は、Hadoopの
可能な方法は、TemporaryFolderをJunit 4.7で使用することです。
参照:http://www.infoq.com/news/2009/07/junit-4.7-rulesまたはhttp://weblogs.java.net/blog/johnsmart/archive/2009/09/29/working-temporary-files-junit-47。
私は(私がより良い解決策を見つけるまで)何をしたのですか?私はFileSystemを拡張しました。
MockitoやPowerMockのようなモックフレームワークを使用して、あなたのインタラクションをFileSystemでモックにしてみませんか?単体テストは実際のFileSystemに依存すべきではありませんが、FileSystemと対話する際のコード内の動作を検証するだけですべきです。
せずにテストすることができますので、それはMiniDFSClusterとMiniMRClusterを設定するために分類しているHadoopのテストジャー
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-test</artifactId>
<version>0.20.205.0</version>
</dependency>
を見て、上記 - あなたのローカルマシンの一時HDFSを作成し、その上に、あなたのテストを実行することができ、それにより
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-minicluster</artifactId>
<version>2.5.0</version>
<scope>test</scope>
</dependency>
Hadoopの-miniclusterを使用することを検討してください。
baseDir = Files.createTempDirectory("test_hdfs").toFile().getAbsoluteFile();
Configuration conf = new Configuration();
conf.set(MiniDFSCluster.HDFS_MINIDFS_BASEDIR, baseDir.getAbsolutePath());
MiniDFSCluster.Builder builder = new MiniDFSCluster.Builder(conf);
hdfsCluster = builder.build();
String hdfsURI = "hdfs://localhost:"+ hdfsCluster.getNameNodePort() + "/";
DistributedFileSystem fileSystem = hdfsCluster.getFileSystem();
そして、あなたはあなたのミニHDFSクラスタをシャットダウンして、一時ディレクトリを削除する必要がありtearDownメソッドで:setUpメソッドは次のようになります。
hdfsCluster.shutdown();
FileUtil.fullyDelete(baseDir);
RawLocalFileSystemを参照してください。私はあなたがそれを嘲笑するほうがいいと思うが。
あなたはHBaseTestingUtilityを使用することができます。
public class SomeTest {
private HBaseTestingUtility testingUtil = new HBaseTestingUtility();
@Before
public void setup() throws Exception {
testingUtil.startMiniDFSCluster(1);
}
@After
public void tearDown() throws IOException {
testingUtil.shutdownMiniDFSCluster();
}
@Test
public void test() throws Exception {
DistributedFileSystem fs = testingUtil.getDFSCluster().getFileSystem();
final Path dstPath = new Path("/your/path/file.txt);
final Path srcPath = new Path(SomeTest.class.getResource("file.txt").toURI());
fs.copyFromLocalFile(srcPath, dstPath);
...
}
}
- 1. Hadoop S3アクセス - FileSystem vs FileContext
- 2. Flink 1.3.2から1.4.0へのアップグレードhadoop FileSystemとPathの問題
- 3. Hadoop 2.7でscheme:wasbエラーのFileSystemがありません
- 4. ユニットテストの方法
- 5. Hadoop Hadoop 3.0でCopyMergeを行う方法
- 6. ユニットテストの方法は?
- 7. ユニットテストの方法FileContentResult?
- 8. ユニットテストの方法Response.Redirect?
- 9. Pythonユニットテストの方法
- 10. thread "main"のhadoop例外java.io.IOException:スキームのFileSystemがありません:https
- 11. グローバルエラーハンドラのユニットテストの方法は?
- 12. Three20ユニットテストの実行方法
- 13. ユニットテストの方法CanExecuteChangedとRaisePropertyChanged
- 14. Djangoユニットテストのデバッグ方法は?
- 15. ユニットテストの方法CodeIgniterコード
- 16. Bluetoothアクセサリーのユニットテスト方法は?
- 17. symfony2コアのユニットテスト方法
- 18. ユニットテストの方法Excel VBAコード
- 19. ユニットテストの実行方法エラー
- 20. ユニットテストは私の方法
- 21. boost :: filesystemのバグ?
- 22. パスのFileSystemを
- 23. ローカルからhadoop環境へのhadoopサンプルjarのコピー方法は?
- 24. /var/log/hadoop-hdfsのhadoop-hdfsログを消去する方法
- 25. hadoop-ec2 in Hadoopパッケージ:リージョンの指定方法は?
- 26. 同じFileSystem内のファイルを効率的にコピーする方法
- 27. boost :: filesystem :: filesystem_errorからエラーコードの意味を取得する方法
- 28. ユニットテストの長方形パッキングアルゴリズムの方法
- 29. ユニットテスト - スタブする方法/方法
- 30. WebプロジェクトとSilverlightプロジェクトのユニットテストの違い(Silverlightプロジェクトのユニットテスト方法)