2011-06-27 24 views
6

Próbuję przetestować moje klasy działań za pomocą wtyczki jUnit. Akcja wygląda następująco:Test jednostki kończy się niepowodzeniem, gdy typem wyniku jest kafelek

@Action(value = "default", results = { 
    @Result(name = "success", type="tiles", location = "login") }) 
public String defaultAction() { 
    return SUCCESS; 
} 

Kiedy wezwać proxy.execute(), wywala testowych. Przypuszczam, że prawdopodobnie zapomniałem czegoś, co sprawia, że ​​mój test działa z kaflami, ale nie mam pojęcia, co to może być. otrzymuję następujący ślad stosu:

java.lang.NullPointerException 
at org.apache.struts2.views.tiles.TilesResult.doExecute(TilesResult.java:105) 
at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186) 
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:373) 
... 

Kiedy zmienić działanie jak poniżej, badanie wykonuje normalnie:

@Action(value = "default", results = { 
    @Result(name = "success", type="redirectAction", location = "login") }) 
public String defaultAction() { 
    return SUCCESS; 
} 
+0

Możesz spróbować spojrzeć na linię 105 w TilesResult, aby zobaczyć, co spowodowałoby tam NPE. –

+0

'TilesContainer container = TilesAccess.getContainer (servletContext); ... container.render (lokalizacja, żądanie, odpowiedź); '' container' ma wartość null. Ale nie wiem dlaczego. – Hayk

Odpowiedz

8

Przed proxy.execute() The executeResult powinien być ustawiony false wartość: proxy.setExecuteResult(false).

+0

Odpowiedź na "[npe-in-strutstestcase-after-enable-tiles] (http://stackoverflow.com/questions/5823709/npe-in-startstestcase-after-enabling-tiles#9062291)" pokazuje, jak skonfigurować junit i płytki, aby ominąć NPE – rveach

Powiązane problemy