FileResource ルールの使い方

テスト後にファイルが消されることを保障しようとするルール - ihirokyの日記の使い方。
使おうと思えば使おうと思うほど @Before/@After でやるのと変わらないような気がしてくるが、ファイル削除を明示的に書かないで済むといえば済む。

テスト毎に扱うファイルが違うとき
    @Rule
    public FileResource fileResource = new FileResource();
    
    @Test
    public void test() throws Exception {
        // hoge.dat.1, hoge.dat.2はテスト後に消える
        File currentFile = fileResource.createFile("hoge.dat.1");
        File newFile = fileResource.createFile("hoge.dat.2");
        ...
    }

    @Test
    public void test2() throws Exception {
        // ディレクトリhogeを示すFileオブジェクトは触らなくても
        // それ自体とその配下にあるファイルはテスト後に消える。
        fileResource.createFile("hoge");
        ...
    }
ファイル削除前に明示的にストリームのクローズを行うような場合
    private SomeFileHandle fh;

    @Before
    public void before() {
        fh = new SomeFileHandle();
    }

    @Rule
    public FileResource fileResource = new FileResource() {
        @Override protected void after() {
            fh.closeFiles(); // ファイルハンドルを閉じる。
            super.after(); // ここでファイル削除が走る。
        }
    };