2011-08-02 1 views
3

ファイルシステムに触れる必要のあるコードをより簡単に単体テストするために、ファイルシステムラッパーとしてcommons-vfsを使用しようとしています。今はAPIに精通しています。私がしたいのは、仮想ファイルシステムを作成し、いくつかのファイル(フォルダとそのフォルダ内のファイルをルートに追加する)です。Commons-vfsファイルシステムをモックアップ

[junit] Testcase: testCreationOfChildrenFiles(com.usengineeringsolutions.bridgewatch.vfs.CommonsVfsLearningSpikeTest):  Caused an ERROR 
[junit] Incorrect file system URI "file:///" in name "file:///rootVfs/childFolder", was expecting "/rootVfs/". 
[junit] org.apache.commons.vfs.FileSystemException: Incorrect file system URI "file:///" in name "file:///rootVfs/childFolder", was expecting "/rootVfs/". 
[junit]  at org.apache.commons.vfs.provider.AbstractFileSystem.resolveFile(AbstractFileSystem.java:274) 
[junit]  at org.apache.commons.vfs.provider.AbstractFileSystem.resolveFile(AbstractFileSystem.java:267) 
[junit]  at org.apache.commons.vfs.provider.AbstractFileObject.resolveFile(AbstractFileObject.java:670) 
[junit]  at com.usengineeringsolutions.bridgewatch.vfs.CommonsVfsLearningSpikeTest.testCreationOfChildrenFiles(CommonsVfsLearningSpikeTest.java:27) 
[junit] 
[junit] 

答えて

1

私はちょうど開始しました:現在、私は次のエラーを取得しています

public class CommonsVfsLearningSpikeTest extends Base { 
FileSystemManager fsManager; 
FileObject rootVFS; 

@Before public void createFixture() throws Exception{ 
    this.fsManager = VFS.getManager(); 
    this.rootVFS = fsManager.createVirtualFileSystem("rootVfs"); 
} 

@Test public void testCreationOfDefaultFileSystem() throws Exception { 
    assertNotNull(fsManager); 
} 

@Test public void testCreationOfVFS() throws Exception { 
    //root file has an empty base name 
    assertEquals("", rootVFS.getName().getBaseName()); 
} 

@Test public void testCreationOfChildrenFiles() throws Exception { 
    FileObject childFolder = rootVFS.resolveFile("childFolder"); 
    childFolder.createFolder(); 
    assertNotNull(childFolder); 

    FileObject childFile = rootVFS.resolveFile("childFolder/childFile"); 
    childFile.createFile(); 
    assertNotNull(childFile); 

} 

}

:ここ

は、私はAPIをテストドライブするために書いたテストクラスですvfsを使用するコンポーネントの単体テストでは、VFSインタフェースを完全にモックしようとするのではなく、 "ram://"ファイルシステムを使用するアプローチを取った。

これは、テスト動作が単なるSUT(被験者)以外のものに依存しているため、単体テストがもはや「純粋」ではないことを意味しますが、それは妥協の余地がありました。ワーキング。

関連する問題