2012-04-03 2 views
0

Недавно я написать веб-приложение с Struts2 REST, и я побежал тест JUnit для класса действий, то я получил ошибку:Почему StrutsJunit4TestCase вызывает метод execute() в настроенном веб-приложении с настройками остатков?

java.lang.NoSuchMethodException: cn.fshk.stock.struts.biz.admin.AuthorizationController.execute()

Но это, кажется, правильно работать в Tomcat.

Доза, предположим, вызывает метод index() в контроллере Struts2 REST?

Может ли кто-нибудь помочь?

  • вот struts.xml

    <?xml version="1.0" encoding="UTF-8"?> 
        ...   
    <struts> 
    
        <constant name="struts.convention.action.suffix" value="Controller" /> 
        <constant name="struts.convention.action.mapAllMatches" value="true" /> 
        <constant name="struts.convention.default.parent.package" value="rest-default" /> 
        <constant name="struts.convention.package.locators" value="rest,struts,struts2,action,actions" /> 
        <constant name="struts.convention.result.path" value="/" /> 
        <constant name="struts.convention.action.packages" value="cn.fshk.stock.struts" /> 
        <constant name="struts.action.extension" value="action,do,,xhtml,xml,json" /> 
        <constant name="struts.mapper.class" value="org.apache.struts2.rest.RestActionMapper" /> 
    
    </struts> 
    
  • В struts.properties:

    struts.i18n.encoding=UTF-8 
    struts.objectFactory = spring 
    struts.objectFactory.spring.autoWire = name 
    struts.objectFactory.spring.useClassCache = true 
    struts.multipart.parser=jakarta 
    struts.multipart.saveDir= 
    struts.multipart.maxSize=2097152 
    struts.serve.static=true 
    struts.serve.static.browserCache=true 
    struts.tag.altSyntax=true 
    struts.devMode = true 
    struts.i18n.reload=false 
    struts.ui.theme=xhtml 
    struts.ui.templateDir=template 
    struts.ui.templateSuffix=ftl 
    struts.configuration.xml.reload=false 
    struts.url.http.port = 80 
    struts.url.https.port = 443 
    struts.custom.i18n.resources=globalmessages 
    struts.dispatcher.parametersWorkaround = false 
    struts.freemarker.wrapper.altMap=true 
    struts.xslt.nocache=false 
    
  • TestCase класса

    package cn.fshk.stock2.struts; 
         ... 
    @RunWith(SpringJUnit4ClassRunner.class) 
    @ContextConfiguration(locations = { "classpath*:application*.xml" }) 
    @TransactionConfiguration(transactionManager = "transactionManager") 
    public class TestStrutsBase<ActionName> extends StrutsSpringJUnit4TestCase<ActionName> { 
    
        Logger logger = Logger.getLogger("cn.fshk"); 
    
        @Test 
        public void testStrutsUtil() throws UnsupportedEncodingException, ServletException { 
    
         String result = executeAction("/biz/admin/authorization");    
         logger.debug(result); 
        } 
    
    } 
    

ответ

0

Хорошо, я выясню, что случилось.

Мне нужно добавить

request.setMethod("GET"); 

перед тем

excuteAction("..."); 
+0

Я просто попытался писать тест struts2 дело, но я не смог использовать функции и т.д. assertNotNull. Пожалуйста, дайте мне знать, как двигаться дальше. –