私は、そのインターフェースのタイプセーフな呼び出しの可能性を追加するフレームワークを作成しました。ここで、JUnitテストを作成するときに、以前にランタイムエラーを引き起こした特定の式がコンパイラーによってチェックされることを示したいと思います。
// this does not compile, because nameProp is of type Property<String>
Integer name = interface.getProperty(nameProp);
おそらく、そのコードをコメントアウトしてそのままにしておくのが最善でしょう。いくつかのテストフレームワークで次のようなものを書くことができるかどうか疑問に思っていました
assertCompilationError() {
Integer name = interface.getProperty(nameProp);
}
カスタムクラスパスを使用したjavacの呼び出しを自分でいじりたくないのは明らかです。フレームワークコードに抽出できる(そしてJUnitまたはTestNGに寄付できる)一般的なソリューションの可能性がある場合は、そのようなソリューションも歓迎されます。