2014-04-22 34 views
0

一個Spring 3控制器的這種基本的Spring測試給了我一個響應代碼404的結果,而不是預期的200:春季測試意外失敗,如何最好地對錯誤進行三角測量?

@RunWith(SpringJUnit4ClassRunner.class) 
public class RootControllerMvcTest extends AbstractContextControllerTests { 

private MockMvc mockMvc; 

@Before 
public void setup() throws Exception { 
this.mockMvc = webAppContextSetup(this.wac) 
.alwaysExpect(status().isOk()).build(); 
} 

@Test 
public void viewIndex() throws Exception { 
this.mockMvc.perform(get("/")).andExpect(view() 
.name(containsString("index"))).andDo(print()); 
} 

AbstractContextControllerTests:

@WebAppConfiguration("file:src/main/webapp/WEB-INF/spring/webmvc-config.xml") 
@ContextConfiguration("file:src/main/resources/META-INF/spring/applicationContext.xml") 
public class AbstractContextControllerTests { 

@Autowired 
protected WebApplicationContext wac; } 

我同另一個試驗驗證控制器方法本身,但是當我使用上下文時,即使控制器在容器中運行時服務正確的頁面,測試也會失敗。

有問題的控制器看起來是這樣的:

@Controller 
public class RootController { 
@Autowired 
CategoryService categoryService;  

    @RequestMapping(value = "/", method = RequestMethod.GET, produces = "text/html") 
    public String index(Model uiModel) {  
      uiModel.addAttribute("categories", categoryService.findAll()); 
     return "index"; 
    } 

顯然我沒有測試我在想什麼。任何建議如何三角化這個問題?

我張貼的全Web MVC框架的文件在Pastebin不擾亂整個空間在這裏。

回答

0

FYI:本value屬性爲@WebAppConfiguration一個XML配置文件,而是 Web應用程序的目錄。所以你當前的測試配置永遠不能工作。

假設applicationContext.xmlwebmvc-config.xml分別是您DispatcherServletWebApplicationContext S,XML配置文件,請嘗試重新定義AbstractContextControllerTests如下:

@RunWith(SpringJUnit4ClassRunner.class) 
@WebAppConfiguration 
@ContextHierarchy ({ 
    @ContextConfiguration("/META-INF/spring/applicationContext.xml"), 
    @ContextConfiguration("file:src/main/webapp/WEB-INF/spring/webmvc-config.xml") 
}) 
public abstract class AbstractContextControllerTests { 

    @Autowired 
    protected WebApplicationContext wac; 

} 

順便說一句,抽象測試類必須是實際被宣佈爲abstract。 ;)

問候,

山姆(Spring的TestContext框架的作者)

+0

謝謝你的建議,山姆。我也必須添加paranthesis(編輯上面的代碼),但是這解決了我的問題,謝謝!我應該質疑,在名稱,抽象名稱中沒有用「Abstract」做類,但是我從[Spring-MVC-Showcase](https://github.com/spring-projects/spring- mvc-showcase/blob/master/src/test/java/org/springframework/samples/mvc/AbstractContextControllerTests.java),並且必須假定這是做到這一點的正確方法。感謝您指出那個新手錯誤。 – MiB

+0

很高興爲你效勞!並感謝您指出缺少的括號。我只是在沒有IDE的情況下鍵入代碼。 ;)我現在修正了這個例子。 –

相關問題