0
Ich habe folgenden Testcode:Mock Basisklassenmethode mit EasyMock
herder = PowerMock.createPartialMock(DistributedHerder.class, new String[]{"backoff", "updateDeletedConnectorStatus"},
new DistributedConfig(HERDER_CONFIG), worker, WORKER_ID, statusBackingStore, configBackingStore, member, MEMBER_URL, time);
configUpdateListener = herder.new ConfigUpdateListener();
rebalanceListener = herder.new RebalanceListener();
plugins = PowerMock.createMock(Plugins.class);
EasyMock.expect(worker.getPlugins()).andReturn(plugins);
EasyMock.expect(herder.connectorType(CONN1)).andReturn(ConnectorType.SOURCE).anyTimes();
wo Connector() Methode in AbstractHerder definiert ist, Basisklasse DistributedHerder. Da die herder weg von DistributedHerder erstellt wird, ist einfach Mock nicht Mock für AbstractHerder Klasse finden, zu NPE führend:
org.apache.kafka.connect.runtime.distributed.DistributedHerderTest > testInconsistentConfigs FAILED
java.lang.NullPointerException
at org.apache.kafka.connect.runtime.AbstractHerder.getConnector(AbstractHerder.java:342)
at org.apache.kafka.connect.runtime.distributed.DistributedHerder$$EnhancerByCGLIB$$af0dd240.CGLIB$getConnector$39(<generated>)
at org.apache.kafka.connect.runtime.distributed.DistributedHerder$$EnhancerByCGLIB$$af0dd240$$FastClassByCGLIB$$8c31132d.invoke(<generated>)
at org.easymock.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
at org.easymock.internal.ClassProxyFactory$MockMethodInterceptor.intercept(ClassProxyFactory.java:92)
at org.apache.kafka.connect.runtime.distributed.DistributedHerder$$EnhancerByCGLIB$$af0dd240.getConnector(<generated>)
at org.apache.kafka.connect.runtime.AbstractHerder.connectorType(AbstractHerder.java:349)
at org.apache.kafka.connect.runtime.distributed.DistributedHerder$$EnhancerByCGLIB$$af0dd240.CGLIB$connectorType$23(<generated>)
at org.apache.kafka.connect.runtime.distributed.DistributedHerder$$EnhancerByCGLIB$$af0dd240$$FastClassByCGLIB$$8c31132d.invoke(<generated>)
at org.easymock.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
at org.easymock.internal.ClassProxyFactory$MockMethodInterceptor.intercept(ClassProxyFactory.java:92)
at org.apache.kafka.connect.runtime.distributed.DistributedHerder$$EnhancerByCGLIB$$af0dd240.connectorType(<generated>)
at org.apache.kafka.connect.runtime.distributed.DistributedHerderTest.setUp(DistributedHerderTest.java:179)
Jeder Hinweis ist willkommen.
Wo rufst du 'reply' auf' herder' an? – tsolakp