Почему я получаю ошибку при использовании Cover As в Eclipse, а не с Junit?

Я использую Eclipse с eCobertura. У меня есть небольшой проект с контроллером (SpringMVC). Я создал тест (JUnit).

Когда я запускаю тест из JUnit (в Eclipse IDE), все в порядке, но когда я запускаю команду (из меню), я получаю сообщение об ошибке

Мой контроллер:

package ec.europa.eu.nwi.web.controller;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

/**
 * @author LEBRUJA
 */
@Controller
public class AvailibilityController {
/**
 * @param request 
 * @return mav
 */
@RequestMapping(value = "/available")
public final ModelAndView available(final HttpServletRequest request) {
    final ModelAndView mav = new ModelAndView("available", "sample", 
            new String("availability on 0.0.1"));
    return mav;
}
}

Мой тест:

package ec.europa.eu.nwi.web.controller.test;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import junit.framework.Assert;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.web.ModelAndViewAssert;
import org.springframework.validation.BindingResult;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;

import ec.europa.eu.nwi.web.controller.AvailibilityController;


@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:spring-servlet.xml"})
public final class AvalibilityControllerTest {

private transient MockHttpServletRequest request;
private transient MockHttpServletResponse response;

@Autowired
private RequestMappingHandlerAdapter handlerAdapter;

@Autowired
private RequestMappingHandlerMapping handlerMapping;


private static final Logger LOGGER = LoggerFactory.getLogger(AvalibilityControllerTest.class);

@Before
public void setUp() throws Exception {              
    request = new MockHttpServletRequest();
    response = new MockHttpServletResponse();
}

@After
public void tearDown() throws Exception {
    LOGGER.debug("TearDown");
}

@Test
public void testAvailable() {
    LOGGER.debug("Start testAvailable1");
    LOGGER.debug("Test only availibility of the apps");
    final AvailibilityController avc = new AvailibilityController();
    final Object mav = avc.available(request);
    Assert.assertEquals(200, response.getStatus());
    Assert.assertTrue(mav instanceof ModelAndView);
    ModelAndViewAssert.assertAndReturnModelAttributeOfType((ModelAndView)mav, "sample", String.class);
    ModelAndViewAssert.assertModelAttributeAvailable((ModelAndView)mav, "sample");
    ModelAndViewAssert.assertModelAttributeValue((ModelAndView)mav, "sample", "availability on 0.0.1");
    ModelAndViewAssert.assertViewName((ModelAndView)mav, "available");        
    final BindingResult result = mock(BindingResult.class);
    when(result.hasErrors()).thenReturn(true);        
    LOGGER.debug("End testAvailable1");
}

@Test
public void testAvailable1() throws Exception {
    LOGGER.debug("Start testAvailable");
    LOGGER.debug("Test only availibility of the apps");
    request.setMethod("GET");
    request.setRequestURI("/available.html"); 

    Object handler = handlerMapping.getHandler(request).getHandler();
    LOGGER.debug("Get the Model and View");
    ModelAndView modelAndView = handlerAdapter.handle(request, response,handler);        
    Assert.assertEquals("availability on 0.0.1", modelAndView.getModel().get("sample"));
    Assert.assertTrue(modelAndView.getModel().containsKey("sample"));
    LOGGER.debug("End testAvailable");
}
}

Если я запускаю с JUnit (Run As Junit), все в порядке, но когда я запускаю Cover As .. JUnit я получаю ошибку.

Ошибка:

Я отфильтровал класс (от конфигурации исключения в Eclipse Coverage Configuration). Если я удалил фильтр, код junit помечается красным

Я не понимаю ошибку.

большое спасибо

1 ответ

Я имел

<aop:aspectj-autoproxy proxy-target-class="true" />

В моем applicationContext.xml и теперь он работает нормально

большое спасибо

Другие вопросы по тегам