Spring单元测试 - 在其他项目中扩展类时使用@ContextConfiguration

时间:2012-12-03 16:21:44

标签: spring unit-testing junit

我有一个弹簧单元测试,扩展了位于其他项目中的其他测试(常见测试)。 我的上下文文件(my-context.xml)与MyTest位于同一个包中。 基本上下文文件(“base-context.xml”)与BaseTest位于同一个包中。 文件如下:

@ContextConfiguration(locations = { "my-context.xml"}) 
public class MyTest extends BaseTest {

@ContextConfiguration(locations = { "base-context.xml" })
public abstract class BaseTest extends AbstractJUnit4SpringContextTests{

问题是:BaseTest找到“base-context.xml”但MyTest获取“{-1}}”my-context.xml“。 如果我将BaseTest和my-context.xml文件移动到与BaseTest相同的包中 - 一切正常。 可能是什么问题?

2 个答案:

答案 0 :(得分:3)

在弹簧文档中查看:http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/resources.html#resources-app-ctx

我会在base-context.xml前面添加“classpath:”关键字,并定义相对于类路径的路径。 您还应该将xml文件放在子目录src / main / resources中,而不是放在java文件旁边。

答案 1 :(得分:0)

如下所述,您可以使用classpath关键字,如下所示:

/**
 * Write a description of class GUI here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */

import java.util.*;
public class GUI
{
    // instance variables - replace the example below with your own
    public static void main(String [] args){
        
        Scanner r = new Scanner(System.in);
        
        int x;
        int y;
        int z;
        
        System.out.println("x");
        
        x = r.nextInt();
        
        System.out.println("y");
        
        y = r.nextInt();
        
        System.out.println("z");
        
        z = r.nextInt();
       
        double t = (x+y+z)/3;
        
        System.out.println("result " + t);
    }
}