我正在尝试测试一个函数,它是struts应用程序的业务逻辑层的一部分。我面临问题,因为代码依赖于组织范围内使用的jar中的外部函数。
public CustomObject getCustomObject(String id){
CustomObject customObject = new CustomObject();
QueryObject sql = createSqlStatement(id); // EXTERNAL jar
Result result = execute(sql); // EXTERNAL jar
ArrayList list = result.getResulList(); // EXTERNAL jar
// Logic to use the list object to fill the customObject
// I can see an error here, that could have been
// caught in unit test
return customObject ;
}
现在问题是测试填充对象的逻辑。
我写的Junit4测试是:
@Test
public void testCustomObject() {
CustomObject customObjectwActual = new CustomObject();
CustomObject customObjectExpected = new CustomObject();
// set properties of customObjectExpected here
customObjectwActual = getCustomObject(id); // Exception here
assertEquals(customObjectExpected , customObjectwActual );
}
抛出异常是因为“根据开发人员的说明,在struts应用程序启动时加载了外部jar类”。我是Java和struts的新手。我的方法有误吗?有没有办法在setUpBeforeClass()
中“加载”这些外部jar类?
如果有任何不清楚的地方,请告诉我。
编辑2:
对不起,我的问题不清楚。我在类路径中有这些外部罐子。它编译得很好,它实际上加载了外部jar的类。 SQL查询存储在xml文件中。这些外部jar也有自己的带有SQL语句的xml文件。它无法加载这两个xml文件中的一个。
此外,即使它们正确加载,我实际上也不想调用数据库。有没有办法模拟这些电话?
答案 0 :(得分:1)
有没有办法去加载"这些外部jar类 setUpBeforeClass()在某种程度上?
您只需要在类路径中包含这些jar。使用时,类会在运行时自动加载
我是Java和struts的新手。我的做法错了吗?
Struts没有任何特定内容。您在项目中使用的外部类的普通核心java必须包含在类路径中
有没有办法模拟这些电话?
如果您模拟这些调用,那么使用编写测试数据库交互的数据库测试用例是什么
我还建议使用像eclipse这样的IDE,因为它对开发非常有帮助,比如提前编译问题,格式化等等