private <T extends AbstractThriftMetadataBuilder> ThriftStructMetadata testMetadataBuild( Class<T> metadataBuilderType, Class<?> structClass, int expectedConstructorParameters, int expectedMethodInjections) throws Exception { ThriftStructMetadata metadata = buildMetadata(structClass, metadataBuilderType); assertNotNull(metadata); assertTrue( MetadataType.UNION == metadata.getMetadataType() || MetadataType.STRUCT == metadata.getMetadataType()); verifyField(metadata, 1, "message"); verifyField(metadata, 2, "type"); ThriftConstructorInjection constructorInjection = metadata.getConstructorInjection().get(); assertNotNull(constructorInjection); assertEquals(constructorInjection.getParameters().size(), expectedConstructorParameters); assertEquals(metadata.getMethodInjections().size(), expectedMethodInjections); return metadata; }