我编写了一个通用类来帮助我们更轻松地编写单元测试。它基本上允许我们使用相同的方法来设置我们的测试,并有一些常用的方法来测试。我知道泛型类的重点是不关心我们正在使用什么类,但拥有这些信息是有帮助的(具体实现可以有一个适当类型的实例变量)。
这是我的课:
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 调用)?