DevFaqTestDataObjectJa

DataObjectおよびDataLoadersのテストを記述する

DataObject のテストを記述する際には、 DataObject.find()DataLoader を正しく検出して DataObject のサブタイプを生成できるよう、 DataLoader の基盤を正しく設定しておく必要があります。


まず、 ファイル・オブジェクトに関連するテストで紹介しているコードを使用するようにしてください。また、テスト内の setUp() メソッドに FileUtil.setMIMEType() の呼び出しを追加して、 DataLoader の MIME タイプに関連付けられたファイル拡張子を手動で設定します。

FileUtil.setMIMEType("mf", "text/x-manifest");

(setMIMEType() はモジュール内での使用が推奨されていませんが、ユニットテスト内で使用する分には問題はないでしょう)

( XML ファイルのサブタイプに関しては、 FileUtil.setMIMEType()*.xml を関連付けようとしてもうまく機能しません。この場合は MIMEResolver をデフォルトの lookup として登録してください。これを使用すれば必要な処理はほぼ実行できます)


次に、 DataObject.find()DataLoader を検出できるよう、対象の DataObject.find() default Lookup として登録されていることを確認して下さい。バージョン 6.0 では New File Type テンプレートが test/unit/META-INF/services 内に正しいファイルを生成し、自動的に設定を行ないます。 (独自にコントロールしたい場合は org.openide.util.test.MockLookup} を使用することもできます)


以下にサンプルコードを示します(事前に テストのクラスパスに MasterFS を追加(英語)しておく必要があります)


private static final String BAD_MANIFEST_CONTENT = 
    "Manifest-Version: 1.0\n" +
    "junk junk junk\n" +
    "some more junk\n";
private static final String GOOD_MANIFEST_CONTENT =
    "Manifest-Version: 1.0\n" +
    "Java-Bean: true\n" +
    "OpenIDE-Module-Name: com.foo.bar\n\n";
private FileObject bad;
private FileObject good;
private DataObject badDob;
private DataObject goodDob;
protected void setUp() throws Exception {
    clearWorkDir();
    FileUtil.setMIMEType("mf", "text/x-manifest");
    File goodManifest = new File(getWorkDir(), "good.mf");
    writeFile(GOOD_MANIFEST_CONTENT, goodManifest);
    good = FileUtil.toFile(goodManifest);
    goodDob = DataObject.find(good);
    File badManifest = new File(getWorkDir(), "bad.mf");
    writeFile(BAD_MANIFEST_CONTENT, badManifest);
    bad = FileUtil.toFile(badManifest);
    badDob = DataObject.find(bad);
}
private void writeFile(String content, File file) throws Exception {
    FileOutputStream os = new FileOutputStream(file);
    try {
        os.write(content.getBytes("UTF-8"));
    } finally {
        os.close();
    }
}



Not logged in. Log in, Register

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo