S2TestCaseでフィールド名とdiconファイル名が衝突
test.examples.dao.EmployeeDaoTest.javaを実行するとExceptionが発生します。
.DEBUG 2004-08-02 00:45:50,803 [main] 物理的なコネクションを取得しました DEBUG 2004-08-02 00:45:50,803 [main] 論理的なコネクションを取得しました DEBUG 2004-08-02 00:45:51,043 [main] 論理的なコネクションを閉じました DEBUG 2004-08-02 00:45:51,333 [main] 物理的なコネクションを閉じました E Time: 1.392 There was 1 error: 1) testGetAllEmployee(test.examples.dao.EmployeeDaoTest)java.lang.IllegalArgumentException at sun.reflect.UnsafeObjectFieldAccessorImpl.set(Unknown Source) at java.lang.reflect.Field.set(Unknown Source) at org.seasar.framework.util.FieldUtil.set(FieldUtil.java:45) at org.seasar.extension.unit.S2TestCase.bindField(S2TestCase.java:343) at org.seasar.extension.unit.S2TestCase.bindFields(S2TestCase.java:316) at org.seasar.extension.unit.S2TestCase.runBare(S2TestCase.java:271) at test.examples.dao.EmployeeDaoTest.main(EmployeeDaoTest.java:23) FAILURES!!! Tests run: 1, Failures: 0, Errors: 1
フィールド名称をkeyにComponentを取ってこようとするところ、同一名称のdiconファイルを読んでいるためにS2ContainerImplを取得してしまっている模様です。EmployeeDaoTestの場合フィールドもdicon(includeされてるやつ)も「dao」ですね。
bindFieldメソッドの条件分岐でNameよりも先にClassで取ってくるようにすればOKかも?