问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Spring MVC Test Framework不支持freemarker吗

发布网友 发布时间:2022-04-24 20:50

我来回答

1个回答

热心网友 时间:2023-10-10 17:07

原因分析:
比如你的maven工程是如下所示,包含很多子mole:
test
test-core
test-web

如果在test-web中测试springmvc的项目时,会发现当前工作目录仍然是test 而不是test-web;所以问题就是出在这。

接下来提供几个方案:
1、绝对路径方式:
@WebAppConfiguration(value = "file:E:\\test\\test-web\\src\\main\\webapp")

FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
configurer.setTemplateLoaderPath("file:E:\\lion\\lion-web\\src\\main\\webapp")

缺点很明显,如果需要在win/linux上切换 很痛苦

2、类路径方式:
@WebAppConfiguration(value = "classpath:template")

FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
configurer.setTemplateLoaderPath("classpath:template");

缺点也是比较明显,需要复制两份模板。

3、通过获取webapp目录路径的方式:
FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
String path = FreeMarkerConfig.class.getClassLoader().getResource(".").toString().substring(6);
String webappPath = path.replace("/target/test-classes/", "");
webappPath = webappPath.replace(wac.getServletContext().getRealPath(""), "");
webappPath = webappPath + "/src/main/webapp";
configurer.setTemplateLoaderPath("file:" + webappPath);
思路就是:先获取当前的测试类编译到的路径,然后往上获取到根,再拼上src/main/webapp即可拿到目录。

所以3更通用些。

如果你只需要使用maven test 运行:更好的方案是:
1、在test-web的pom.xml中添加
Java代码 收藏代码
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemProperties combine.children="append">
<property>
<name>molePath</name>
<value>${project.basedir}</value>
</property>
</systemProperties>
</configuration>
</plugin>
project.basedir就是当前模块的目录。
然后在测试类中通过:System.getProperty("molePath"); 即可拿到该路径,但是如果在如idea集成环境中不好用。

还一种方案是如在idea中使用(具体没有测试):
n Run->Edit configuration->Defaults->JUnit->Working directory set the value$MODULE_DIR$ and Intellij will set the relative path in all junits just like Maven.
http://stackoverflow.com/questions/5637765/how-to-deal-with-relative-path-in-junits-between-maven-and-intellij
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
ef英语哪个好 EF英孚英语培训怎么样? 英孚英语好不好 EF英孚教育到底好不好 大佬们,麦芒7和荣耀10那个值得入手?2500以下的机子还有啥好推荐的么... 介绍几款2500元以前的手机 像素一定要高 其他的不做要求 近期想入手一部安卓手机,价格2200到2500左右…买HTC desire Z还是 三星... 笔记本忘记开机密码怎么办急死了 笔记本电脑屏幕开机锁忘记密码 怎么办?急死了 华硕笔记本电脑开机密码忘记了怎样找回?系统是Windows 7旗舰版... 产品开发中lead customer和target market的区别? 关于在IDEA中使用maven的运行test目录下的main方法无法找到类的? 汽车制造业validation和testing的区别是什么? Target Profiling and Liability Testing生物医药中是什么意思 微信好友之前删了的,后来在共同的好友群里添加回好友。一添加就秒通过是什么回事?求大神相告&#128591; 加对方微信结果秒通过是什么意思 ubuntu中输入make 显示recipe for target testfailed是怎么回事 为什么加,对方秒速通过,是号丢了吗? 嵌入式系统开发模式及过程,host和target指的是什么 针对性测试 翻译为 Targeted testing.是什么意思 怎么下载扫描二维码? 小米10屏幕有些地方失灵,如打王者技能划不动维修大概要多少钱?_百度知 ... Acer笔记本的wifi如何打开 如何打开宏基笔记本的无线网络开关 acer怎么连接wifi acer笔记本wifi开关怎么找 宏基笔记本如何打开wifi? 宏基笔记本怎么连接wifi acer笔记本怎么连接无线网络? 六年级数学上册看图找关系第三题的答案,要 过程 linux上做单元测试的时候,用到了一个命令ant test。问:该目录下并没有test这个文件。只有build.xml文件 微信申请好友秒通过? 无损检测的专业词汇中英文对照,哪位帮忙说一下,很难找呢! auto test是什么意思 利用Python取数据和划分训练集 QQ上有人给我发exe文件,我下载了,但是不知道怎么打开,求支招 qq传过来的应用软件(扩展名为exe)如何打开 朋友用QQ给我传了个exe文件 我双击打开 却说要用什么打开方式打开 请大家教下怎么才能打开exe文件 打开方式怎么打开exe的文件?要选什么? 如何打开QQ传送的EXE文件 在qq上下载的exe文件怎样能打开 白开水txt全集下载 如何找到QQ安装目录下的qq.exe文件 东方白《龙在江湖》txt全集下载 《东方》txt全集下载 后缀是exe的文件 用什么打开方式打开? 白开水小说txt全集免费下载 《一战封神,少年东方白》txt下载在线阅读全文,求百度网盘云资源 QQ EXE文件怎么查看? 《替身》txt全集下载