【发布时间】:2011-07-01 03:13:37
【问题描述】:
我有一个我想用 Fitnesse 运行的测试夹具,它涉及到使用 Spring。我一直无法使用 ClasspathXmlApplicationContext 加载 spring 应用程序上下文,而且我确定是我还没有弄清楚的类路径配置。
这是我的设置。
如您所见,fitnesse.jar 位于项目内部,因此我可以在拥有项目工作副本的任何地方运行 Fitnesse 服务器和测试(所有 wiki 文件都位于 FitNesseRoot 文件夹中)。 bin 是项目的输出文件夹(所有 .class 都在其中)。
现在,代码:
InventarioQueryTest(来自 Fitnesse 的 wiki 页面,注意 !path 声明)
!define TEST_SYSTEM {slim}
!path ../bin
!path ../web/WEB-INF/lib/**.jar
|import |
|com.softclear.inventario.test.fitnesse|
|Query:listar status |
|id|nombre|entidad|descripcion|
ListarStatus.java(Fitnesse 调用的文本夹具)
public class ListarStatus {
private ServicioStatus serv;
private ClassPathXmlApplicationContext ctx;
//fitnesse calls the constructor
public ListarStatus(){
ctx = new ClassPathXmlApplicationContext(new String[] {
"applicationContext-ListarStatus.xml",
"applicationContext-dao.xml",
"applicationContext-hibernate.xml"});
//performs dependency injection of DAO and HibernateSession
serv = (ServicioStatus) ctx.getBean("servicioStatus");
}
//and the query method is the test
public List<Object> query() {
List<Status> lista = serv.listarStatus();
QueryResultBuilder builder = new QueryResultBuilder(Status.class);
QueryResult result = builder.build(lista.iterator());
return result.render();
}
}
我使用项目工作副本中的 java -jar 运行 Fitnesse。当我运行测试时,fitnesse 执行的命令如下:
java -cp fitnesse.jar;../bin;C:\Dev\WS\softclear\SistemaInventario\fitnesse\..\web\WEB-INF\lib\ajax\AjaxFileUpload-0.03.jar;%the.rest.of.the.web-inf/lib.jars...% fitnesse.slim.SlimService 8086
所有在测试中产生这个错误的东西:
java.io.FileNotFoundException: class path resource [applicationContext-ListarStatus.xml] cannot be opened because it does not exist
据我了解,wiki 中的 !path ../bin 应该指示要包含在类路径中的所有子文件夹和内容(java -cp 调用),但显然它不会……
有什么想法吗?非常感谢您的宝贵时间!
【问题讨论】:
标签: java spring automated-tests fitnesse