CodeModel 2.6 を使用しています。
getType( ) メソッドが JDefinedClass の 2 レベル上の抽象スーパークラスから継承されている場合、この命令をどのように生成すればよいでしょうか?
assertEquals(GeneraldocumenMetadata.TYPE, generaldocumenMetadata.getType());
バックグラウンド:
- assertEquals(...) メソッドは、「import static org.junit.Assert.assertEquals;」から来ています。
- クラス階層は
- GeneraldocumenMetadata は ItemMetadata を拡張します
- ItemMetadata は AbstractItemMetadata を拡張します
- AbstractItemMetadata は getType() メソッドとプライベート タイプ フィールドを所有します
最終結果/望ましい方法は次のとおりです。
@Test
public void testParameterizedConstructorSuccess()
{
String modifiedType = GeneraldocumenMetadata.TYPE + "andMore";
generaldocumenMetadata = new GeneraldocumenMetadata(modifiedType);
assertEquals(modifiedType, generaldocumenMetadata.getType());
}
CodeModel メソッドは現時点ではこのようになっていますが、 "definedClass.getMethod("getType", new JType[] {}); " は null を返します
private void testDefaultConstructorMethod(JFieldVar uutField, JVar staticTYPEVar, final JDefinedClass unitTestClass, JDefinedClass definedClass, JCodeModel codeModel)
{
int modifiers = JMod.PUBLIC;
JMethod unitTestMethod = unitTestClass.method(modifiers, Void.TYPE, "testDefaultConstructor");
unitTestMethod.annotate(org.junit.Test.class);
JBlock unitTestBody = unitTestMethod.body();
unitTestBody.assign(uutField, JExpr._new(unitTestClass));
JClass abstractItemMetadataClass = definedClass._extends();
JMethod getTypeMethod = definedClass.getMethod("getType", new JType[] {});
JExpr.invoke(getTypeMethod);
JInvocation assertEqualsInvoke = codeModel.directClass("org.junit.Assert").staticInvoke("assertEquals").arg(staticTYPEVar).arg(JExpr.invoke(getTypeMethod));
unitTestBody.add(assertEqualsInvoke);
}