0

我正在尝试使用 MockMvc 类进行一些“集成”测试

我用:

this.mockMvc.perform(
            get("/admin"))
                    .andExpect(status().isOk())
                    .andDo(print());

但是负责生成页面的freemarker正在使用安全标签库

 <#assign security=JspTaglibs["http://www.springframework.org/security/tags"] />

maven依赖:

  <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-taglibs</artifactId>
        <version>3.2.0.RELEASE</version>
    </dependency>

测试时似乎不可用..异常:

The following has evaluated to null or missing:
==> security  [in template "lib/abc.ftl" at line 170, column 19]

应用程序本身正在运行,但我必须使用 mvn tomcat:run-war 而不是 mvn tomcat:run 来获取 taglib。

4

1 回答 1

1

我不得不复制

~/.m2/repository/org/springframework/security/spring-security-taglibs/3.2.0.RELEASE/spring-security-taglibs-3.2.0.RELEASE.jar 

到我的 WEB-INF/lib 文件夹。然后我得到另一个关于 Missiong 'Tag' 类的问题,所以我不得不添加

 <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.2</version>
    </dependency>

复制粘贴该jar文件似乎是肮脏的解决方法..如果有更好的解决方案,请告诉我。

编辑

有一种方法可以使用 mvn tomcat7:run 而不是 run-war 来运行它,因此无需重新启动服务器即可加载标记库并刷新模板文件。只需添加

<jarScanAllDirectoriescontextReloadable>true</jarScanAllDirectoriescontextReloadable>
<contextReloadable>true</contextReloadable>

到 pom.xml 中的 tomcat7-maven-plugin

于 2014-01-13T10:56:25.603 回答