Spring Test NoMethod错误

时间:2014-10-31 01:09:09

标签: java spring testing

我正在使用spring来运行我的测试并得到奇怪的错误,这阻止了我一段时间。

Writer和Parser是没有属性且只使用默认构造函数的类。

AbstractTestCaseUnit.java

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "file:spring-configuration/unit-test-config.xml" })
public abstract class AbstractTestCaseUnit {

    @Resource(name = "Parser")
    private DataParser Parser;;

    @Resource(name = "Writer")
    private DataWriter Writer;

    public DataParser getMessageParser() {
        return Parser;
    }

    public DataWriter getDataWriter() {
        return Writer;
    }
}

DataParseTest.java

public class DataParserTest extends AbstractTestCaseUnit {

    @Test
    public void testParseMessageHappyCase() {...}


}

单元测试-config.xml中

  <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd ">


        <import resource="unit-test/environment.xml" />

        <bean id="Parser"
            class="com.datatype.DataParser" />

        <bean id="Writer"
            class="com.datatype.DataWriter" />

错误:

 [junit] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.013 sec
    [junit] 
    [junit] Testcase: initializationError took 0.003 sec
    [junit]     Caused an ERROR
    [junit] org.springframework.beans.BeanUtils.instantiateClass(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/Object;
    [junit] java.lang.NoSuchMethodError: org.springframework.beans.BeanUtils.instantiateClass(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/Object;
    [junit]     at org.springframework.test.context.ContextLoaderUtils.resolveContextLoader(ContextLoaderUtils.java:87)
    [junit]     at org.springframework.test.context.ContextLoaderUtils.buildMergedContextConfiguration(ContextLoaderUtils.java:298)
    [junit]     at org.springframework.test.context.TestContext.<init>(TestContext.java:100)
    [junit]     at org.springframework.test.context.TestContextManager.<init>(TestContextManager.java:117)
    [junit]     at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTestContextManager(SpringJUnit4ClassRunner.java:119)
    [junit]     at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.<init>(SpringJUnit4ClassRunner.java:108)
    [junit]     at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    [junit]     at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    [junit] 

1 个答案:

答案 0 :(得分:1)

您似乎正在混合不同(不兼容)的Spring组件版本。检查你的课程路径。

如果您使用的是Maven或Gradle等项目管理工具,请确保项目的依赖项不包含Spring工件,否则它们将由传递依赖机制获取。

如果使用Eclipse和Maven之类的IDE,则可以使用POM编辑器打开pom.xml,并在依赖关系层次结构选项卡中检查已解析的依赖关系。然后,您可以排除违规(通常较旧)的依赖关系。