2011-05-08 4 views
8

У нас есть тест, который расширяет JerseyTest, и нам нужно ввести в него макет службы. Как мы можем это сделать?Unit-testing Jersey with Mocks

Благодаря

+0

новый один Джерси на меня. Я думал, что все используют JUnit или TestNG. – duffymo

+0

Расширение JerseyTest позволяет добавлять обычные аннотации JUnit @Test, но я не знаю, как вводить макет службы в конфигурации Spring, используемой jersey-spring. Есть предположения? – alecswan

+0

Вам действительно нужно вводить mockito, когда у него есть только статические методы? – Spoike

ответ

2

Edit: это решение работает только с Джерси 1.x, и поэтому совершенно устарели.

Это относится к http://geek.riffpie.com/unit-testing-restful-jersey-services-glued-together-with-spring/ библиотеке.

Если вы используете Spring, вы можете расширить AbstractSpringAwareJerseyTest вместо JerseyTest и вводить все, что вам нужно.

В соответствии с просьбой, немного фрагмент кода:

public class MyClassTest extends AbstractSpringAwareJerseyTest{ 

    @Autowired 
    private LdapSetupAndTearDown ldapSetupAndTearDown; 

    @Before 
    public void setUp2() throws Exception { 
    ldapSetupAndTearDown.setUp(); 
    } 

    @After 
    public void tearDown2() throws Exception { 
    ldapSetupAndTearDown.tearDown(); 
    } 

    public MyClassTest() throws Exception { 
    super(new WebAppDescriptor.Builder() 
    .contextPath("JSONUserServiceTest") 
    .contextParam("contextConfigLocation", 
     "classpath:/ctx-config-test.xml,classpath:/ctx-core.xml, classpath:/ctx-jmx-test.xml, classpath:ctx-jersey.xml, classpath:ctx-ldap.xml, classpath:ctx-ldap-test.xml") 
    .servletClass(SpringServlet.class).contextListenerClass(ContextLoaderListener.class).build()); 
    } 
+1

Я предполагаю, что он указывает на: http://geek.riffpie.com/unit-testing-restful-jersey-services-glued-together-with-spring/ Я не работал, хотя. –

+0

Именно этот учебник привел меня к этому решению, и он отлично работает. Спасибо за точность. –

+0

Не могли бы вы объяснить, как «@ Autowired» beans вводятся в тестовый класс (например, вы комментировали некоторые «@ RunWith»)? Не могли бы вы передать простой пример вашего тестового класса? –