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

时间:2015-09-24 13:12:01

标签: java web-applications junit classpath

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

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

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

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

1 个答案:

答案 0 :(得分:6)

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