почему StrutsJunit4TestCase вызывает метод execute () в настроенном веб-приложении с перестановками в стойках? - PullRequest
0 голосов
/ 03 апреля 2012

Недавно я написал веб-приложение с Struts2 REST, и я выполнил тест junit для класса Action, затем я получил ошибку:

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

Но, похоже, он правильно работает в Tomcat.

Предполагается ли вызывать метод index () в REST-контроллере Struts2?

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

  • вот 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);
         }
    
    }
    

1 Ответ

0 голосов
/ 04 апреля 2012

хорошо, я выяснил, что не так.

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

    request.setMethod("GET");

до

    excuteAction("...");
...