2017-02-16 1 views
0

i dunno, как сделать один образец теста с помощью kafka, я попытался следовать руководству по весне, но не работал.Ошибка создания модульного теста с использованием потока весеннего облака с использованием kafka

Может кто-нибудь мне помочь?

ZZZZZ ZZ zzzzzzzzzzz

@RunWith(SpringRunner.class) 
@SpringBootTest 
@DirtiesContext 
public class EnrollSenderTest { 

@Autowired 
public EnrollSender producer; 

@Autowired 
private BinderFactory<MessageChannel> binderFactory; 

@Autowired 
private MessageCollector messageCollector; 

@SuppressWarnings("unchecked") 
@Test 
public void test() { 

    Message<String> message = new GenericMessage<>("hello"); 
    producer.sendEnroll(message); 

    Message<String> received = (Message<String>) messageCollector.forChannel(producer.getOutput()).poll(); 
    assertThat(received.getPayload(), equalTo("hello")); 
} 
} 

И мой класс продюсер:

@Service 
@EnableBinding(Source.class) 
public class EnrollSender { 

private final MessageChannel output; 

public EnrollSender(Source output) { 
    this.output = output.output(); 
} 

public void sendEnroll(Object enroll) { 
    output.send(MessageBuilder.withPayload(enroll).build()); 
} 

public MessageChannel getOutput() { 
    return output; 
} 

}

Но дает следующее сообщение об ошибке:

java.lang.IllegalStateException: Failed to load ApplicationContext 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageCollector' defined in class path resource [org/springframework/cloud/stream/test/binder/TestSupportBinderAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.cloud.stream.test.binder.MessageCollector]: Factory method 'messageCollector' threw exception; nested exception is java.lang.NoSuchMethodError: org.springframework.cloud.stream.binder.BinderFactory.getBinder(Ljava/lang/String;Ljava/lang/Class;)Lorg/springframework/cloud/stream/binder/Binder; 

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.cloud.stream.test.binder.MessageCollector]: Factory method 'messageCollector' threw exception; nested exception is java.lang.NoSuchMethodError: org.springframework.cloud.stream.binder.BinderFactory.getBinder(Ljava/lang/String;Ljava/lang/Class;)Lorg/springframework/cloud/stream/binder/Binder; 

Caused by: java.lang.NoSuchMethodError: org.springframework.cloud.stream.binder.BinderFactory.getBinder(Ljava/lang/String;Ljava/lang/Class;)Lorg/springframework/cloud/stream/binder/Binder; 

ответ

0

Похоже, у вас естьнесоответствующая зависимость, установленная в пути к классам (т. более ранняя версия ядра Spring Cloud Stream).

Вы можете решить эту проблему, удалив версию для spring-cloud-stream-test-support, потому что спецификация Camden.SR4 предоставит правильный вариант.

Кроме того, если вы хотите проверить с помощью встроенного экземпляра Кафки, вы можете найти пример здесь: https://github.com/spring-cloud/spring-cloud-stream-samples/blob/master/multibinder/src/test/java/multibinder/RabbitAndKafkaBinderApplicationTests.java#L57

(пример показывает, как настроить вяжущий Кафка со встроенным брокером для тестирования - это также показывает как использовать два разных связующих в одном приложении, но, вероятно, вас это не волнует).

+0

'code' dependencyManagement { импорт { mavenBom "org.springframework.cloud:spring-cloud-dependencies:Camden.SR4" } } compile 'org.springframework.cloud:spring-cloud-starter-stream-kafka' группа компиляции: 'org.springframework.cloud', имя: 'spring-cloud-stream-test-support', версия : '1.1.1.RELEASE' –

0

Marius Bogoevici, мои dependencys

dependencyManagement { 
imports { 
     mavenBom "org.springframework.cloud:spring-cloud-dependencies:Camden.SR4" 
    } 
} 

compile 'org.springframework.cloud:spring-cloud-starter-stream-kafka' 
compile group: 'org.springframework.cloud', name: 'spring-cloud-stream-test-support', version: '1.1.1.RELEASE' 
0

Это происходит из-за несовместимых версий, как указывал Marius выше.

Вам понадобится Camden.SR5, который имеет совместимые версии Spring Spring Stream и Spring Cloud Stream или Camden.SR4 с поддержкой Spring Cloud Stream версии поддержки 1.1.0.RELEASE.

This это изменение, пошел между 1.1.0.RELEASE и 1.1.1.RELEASE Спринг Облако катаные:

+0

пересмотренный Илайперапермал Гопинатхан, спасибо, мне удалось добавить второй параметр, но ошибка остается то же самое. –

+0

Можете ли вы поделиться своими текущими зависимостями и стеком исключения? –