在webapp的控制器中,当给定条件为真时,我将重定向到其他页面(xyz.jpsx)。
现在,在Junit测试中,我想强制执行重定向,但重定向也指向实际存在的jsp。
我在Junit内找不到从WEB-INF内部读取文件的方法。我不想硬编码完整路径,因为解决方案不太便携。
我完全理解WEB-INF中的文件不在类路径中,但可能有办法访问这些文件。寻找可在我的集成服务器上运行的便携式解决方案。
答案 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