2016-02-11 5 views
0

Я новичок в тестировании JUnit. Не могли бы вы рассказать мне, как выполнять Junit Testing для недействительных методов.Как выполнить Junit Тестирование методов пустот

У меня этот класс DemoPublisher и этот метод demoPublishMessage() который имеет тип возврата void. Как я могу проверить этот метод?

package com.ge.health.gam.poc.publisher; 

import javax.jms.JMSException; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.jms.core.JmsTemplate; 
import org.springframework.stereotype.Component; 
import org.springframework.web.bind.annotation.ResponseBody; 

import com.ge.health.gam.poc.consumer.DemoConsumer; 

@Component 
public class DemoPublisher { 

    @Autowired 
    JmsTemplate jmsTemplate; 

    public void demoPublishMessage(String message) throws JMSException{ 
     jmsTemplate.convertAndSend("NewQueue", message); 
     System.out.println("Message sent"); 

    } 
} 
+0

См. Http://jmockit.org – ajb

ответ

2

Решение этой проблемы называется «издевается»: Вы можете создать «высмеивал» JmsTemplate, вводят его в свой класс, выполнить свой метод, а затем проверить, что apropriate метод вашего издеваться называли:

// This annotation enables the @Mock, etc. annotations 
@RunWith(MockitoJUnitRunner.class) 
public class DemoPublisherTest { 

    // This creates an instance of this class and then injects all the mocks if possible 
    @InjectMocks 
    private DemoPublisher demoPublisher; 

    // This creates a mocked instance of that class 
    @Mock 
    private JmsTemplate jmsTemplate; 

    @Test 
    public void demoPublishMessage_must_call_jmsTemplate_method() { 

     // Call the class to test 
     this.demoPublisher.demoPublishMessage("test"); 

     // And now verify that the method was called exactly once with the given parameters 
     Mockito.verify(this.jmsTemplate, Mockito.times(1)).convertAndSend(("NewQueue", "test"); 
    } 

} 

Mockito - отличный инструмент для этого и позволяет использовать множество способов издевательства.

+0

Спасибо @Florian, Привет Это решение работает нормально, но покрытие очень меньше, поэтому я должен это делать, чтобы увеличить это? –

+0

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

0

Использование Mockito (http://mockito.org/) издеваться JmsTemplate. Использовать проверку, чтобы проверить, что методы были вызваны с заданными аргументами, вы можете использовать гибкое сопоставление аргументов, например любое выражение через any() или захватить какие аргументы, где вызывается с помощью @Captor, вместо этого

0

Что вы делаете, так это то, что вы проверяете сторону последствия. Это отправка сообщения и вывод строки.

Вы бы издевались над jmsTemplate, а затем подтвердили, что он вызван. Если это действительно важно для вас, вы также будете тестировать вывод на System.out, насмехаясь и проверяя его.

Доступны различные смехотворные библиотеки. Тот, который мне больше всего нравится Mockito

Дополнительную информацию см. В документации вашей любимой библиотеки.

Смежные вопросы