如何在JUNIT测试中从WEB-INF获取文件

pma*_*in8 4 java junit web-applications classpath

在webapp的控制器中,当给定条件为真时,我将重定向到其他页面(xyz.jpsx).

现在,在Junit测试中,我想强制执行重定向,但重定向也指向实际存在的jsp.

在Junit内部,我找不到从WEB-INF内部读取文件的方法.我不想硬编码完整路径,因为解决方案不太便携.

我完全理解WEB-INF中的文件不在类路径中,但可能有办法访问这些文件.寻找可在我的集成服务器上运行的便携式解决方案.

Cro*_*ell 8

在JDK 1.7中有很好的NIO.2 API和类Path,在这个类的帮助下,你可以轻松地使用JSP访问文件夹(没有任何ServletContexts或其他),并使用JSP文件列表做你需要的,这里是一些小样本为了你:

import org.junit.Test;

import java.io.File;
import java.nio.file.Paths;

public class WebInfAccessTest
{
    @Test
    public void shouldListJsps()
    {
        File jspFolder = Paths.get("src/main/webapp/WEB-INF/pages").toFile();
        for (File jsp : jspFolder.listFiles())
            System.out.println(jsp.getName());
    }

}

======================================================================
Here is result for my test Maven project
======================================================================
$ mvn test
...
 T E S T S
-------------------------------------------------------
Running WebInfAccessTest
add.jsp
get.jsp
list.jsp
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.073 sec
Run Code Online (Sandbox Code Playgroud)