単体テストを簡単に記述できるように、汎用クラスを作成しました。基本的には、同じメソッドを使用してテストをセットアップできるようにし、いくつかの共通メソッドを使用してテストできるようにするためです。ジェネリック クラスのポイントは、作業しているクラスを気にしないことですが、この情報があると役立ちます (具体的な実装は、適切な型のインスタンス変数を持つことができます)。
これが私のクラスです:
public abstract class AbstractModuleTest<M extends Module> {
@Autowired protected WebDriver driver;
private final Type type;
protected AbstractModuleTest() {
final ParameterizedType parameterizedType =
(ParameterizedType) getClass().getGenericSuperclass();
type = parameterizedType.getActualTypeArguments()[0];
}
protected <S extends AbstractPage> M setup(final S s, final String errorMsg) {
for (final Module m : s.getModules()) {
if (m.getClass().equals(type)) {
try {
final Class c = Class.forName(StringUtils.subStringAfter(type.toString(), " "));
return (M) c.cast(m);
} catch (ClassNotFoundException cnfe) { throw new RuntimeException(cnfe); }
}
}
Assert.fail(errorMsg);
}
私が扱っているクラスを取得する簡単な方法はありますか (StringUtils.substringAfter 呼び出しを避けるため)?