Tôi muốn chạy thử nghiệm đơn vị nhưng tôi cần phải có một cá thể org.apache.hadoop.fs.FileSystem. Có bất kỳ giả lập hoặc giải pháp nào khác để tạo FileSystem không?Hadoop: Làm thế nào để kiểm tra đơn vị FileSystem
Trả lời
Hãy xem jar hadoop-test
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-test</artifactId>
<version>0.20.205.0</version>
</dependency>
nó đã phân loại thành lập một MiniDFSCluster và MiniMRCluster vì vậy bạn có thể kiểm tra mà không hadoop
Một cách có thể là sử dụng TemporaryFolder trong tháng 6 4.7.
Xem: http://www.infoq.com/news/2009/07/junit-4.7-rules hoặc http://weblogs.java.net/blog/johnsmart/archive/2009/09/29/working-temporary-files-junit-47.
Những gì tôi đã làm (cho đến khi tôi tìm ra giải pháp tốt hơn) Tôi đã mở rộng Hệ thống tệp.
Tại sao không sử dụng khung mocking như Mockito hoặc PowerMock để giả lập các giao diện của bạn với FileSystem? Các bài kiểm tra đơn vị của bạn không nên phụ thuộc vào một Hệ thống tệp thực tế, nhưng chỉ nên xác minh hành vi trong mã của bạn khi tương tác với Hệ thống tệp.
Nếu bạn đang sử dụng hadoop 2.0.0 và ở trên - hãy xem xét sử dụng hadoop-minicluster
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-minicluster</artifactId>
<version>2.5.0</version>
<scope>test</scope>
</dependency>
Với nó, bạn có thể tạo một hdfs tạm thời trên máy cục bộ và chạy thử nghiệm trên đó. Phương thức setUp có thể trông giống như sau:
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();
Và trong phương thức tearDown, bạn nên tắt cụm mini hdfs và xóa thư mục tạm thời.
hdfsCluster.shutdown();
FileUtil.fullyDelete(baseDir);
Bạn có thể muốn xem xét RawLocalFileSystem. Mặc dù tôi nghĩ tốt hơn là bạn nên thử.
Bạn có thể sử dụng 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. Kiểm tra đơn vị - Làm thế nào để tiếp tục?
- 2. Làm thế nào để kiểm tra đơn vị IDisposable?
- 3. Làm thế nào để bạn kiểm tra đơn vị?
- 4. kiểm tra đơn vị python cách làm thế nào để
- 5. Làm thế nào để viết bài kiểm tra đơn vị kiểm tra bất biến đồng thời
- 6. Kiểm tra đơn vị - Những gì không để kiểm tra
- 7. DAO Kiểm tra đơn vị
- 8. Đơn vị kiểm tra destructors?
- 9. Đơn vị kiểm tra TSQL
- 10. Làm thế nào để thử DateTime.Now trong các bài kiểm tra đơn vị?
- 11. Mock UdpClient để kiểm tra đơn vị
- 12. Kiểm tra đơn vị XQuery
- 13. Khung kiểm tra đơn vị C nào?
- 14. Kiểm tra đơn vị XCode
- 15. Kiểm tra đơn vị XSLT
- 16. Kiểm tra đơn vị EJB
- 17. Đơn vị kiểm tra RedirectToRouteResult
- 18. Đơn vị Kiểm tra tệp tải lên, làm cách nào?
- 19. Kiểm tra Đơn vị & Log4net
- 20. Mới để kiểm tra đơn vị
- 21. Nơi để kiểm tra đơn vị?
- 22. Làm thế nào để bạn biết những gì để kiểm tra khi viết bài kiểm tra đơn vị?
- 23. Kiểm tra đơn vị CacheManager
- 24. Kiểm tra đơn vị JSPs
- 25. Kiểm tra đơn vị CSS
- 26. Kiểm tra đơn vị Scala
- 27. Làm thế nào để kiểm tra đơn vị tốt nhất để quản lý?
- 28. NoSQL - Làm thế nào để giả lập cơ sở dữ liệu để kiểm tra đơn vị?
- 29. Bài kiểm tra đơn vị cơ bản so với bài kiểm tra đơn vị
- 30. đơn vị kiểm tra angularjs chỉ thị