Struts アプリケーションのビジネス ロジック層の一部である関数をテストしようとしています。コードが組織全体で使用される jar の外部関数に依存しているため、問題に直面しています。
public CustomObject getCustomObject(String id){
CustomObject customObject = new CustomObject();
QueryObject sql = createSqlStatement(id); // EXTERNAL jar
Result result = execute(sql); // EXTERNAL jar
ArrayList list = result.getResulList(); // EXTERNAL jar
// Logic to use the list object to fill the customObject
// I can see an error here, that could have been
// caught in unit test
return customObject ;
}
問題は、オブジェクトを埋めるロジックをテストすることです。
私が書いた Junit4 テストは次のとおりです。
@Test
public void testCustomObject() {
CustomObject customObjectwActual = new CustomObject();
CustomObject customObjectExpected = new CustomObject();
// set properties of customObjectExpected here
customObjectwActual = getCustomObject(id); // Exception here
assertEquals(customObjectExpected , customObjectwActual );
}
開発者の説明によると、「strutsアプリケーションの起動時に外部jarクラスがロードされる」ため、例外がスローされます。私はJavaとストラットが初めてです。私のアプローチは間違っていますか?これらの外部jarクラスを何らかの方法で「ロード」する方法はありsetUpBeforeClass()
ますか?
ご不明な点がございましたらお知らせください。
編集 2: 申し訳ありませんが、私の質問は不明です。クラスパスにこれらの外部 jar があります。正常にコンパイルされ、実際に外部 jar のクラスがロードされます。SQL クエリは xml ファイルに保存されます。これらの外部 jar には、SQL ステートメントを含む独自の xml ファイルもあります。これら 2 つの xml ファイルのいずれかをロードできません。
さらに、それらが正しくロードされたとしても、実際にはデータベースを呼び出したくありません。これらの呼び出しをモックする方法はありますか?