Task を拡張するカスタム ant タスクを作成しています。タスクで log() メソッドを使用しています。私がやりたいのは、タスクの開発中に単体テストを使用することですが、タスクを実行するコンテキストを設定して、ant で実行されているかのようにタスクを初期化する方法がわかりません。
これはカスタム タスクです。
public class CopyAndSetPropertiesForFiles extends Task {
public void execute() throws BuildException {
log("CopyAndSetPropertiesForFiles begin execute()");
log("CopyAndSetPropertiesForFiles end execute()");
}
}
これは単体テスト コードです。
CopyAndSetPropertiesForFiles task = new CopyAndSetPropertiesForFiles();
task.execute();
コードがテストとして実行されると、ログを呼び出すときに NullPointerException が発生します。
java.lang.NullPointerException
at org.apache.tools.ant.Task.log(Task.java:346)
at org.apache.tools.ant.Task.log(Task.java:334)
at uk.co.tbp.ant.custom.CopyAndSetPropertiesForFiles.execute(CopyAndSetPropertiesForFiles.java:40)
at uk.co.tbp.ant.custom.test.TestCopyAndSetPropertiesForFiles.testCopyAndSetPropertiesForFiles(TestCopyAndSetPropertiesForFiles.java:22)
コンテキストやスタブ、またはタスクに似たものを提供する方法を知っている人はいますか?
ありがとう、
ロブ。
Abarax からの受け入れられた回答。task.setProject(new Project()); を呼び出すことができました。コードが正常に実行されるようになりました (コンソールにログが表示されないことを除いて - 少なくともコードを実行できます :-) )。