java - Spring 测试 NoMethod 错误

标签 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;
    }
}

数据解析测试.java

public class DataParserTest extends AbstractTestCaseUnit {

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


}

单元测试配置.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] 

最佳答案

您似乎混合了不同(不兼容)版本的 Spring 组件。检查您的类路径。

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

如果使用像 Eclipse 和 Maven 这样的 IDE,您可以使用 POM 编辑器打开您的 pom.xml 并在 Dependency Hierarchy 选项卡中检查已解析的依赖项。然后您可以排除有问题的(通常是较旧的)依赖项。

关于java - Spring 测试 NoMethod 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26666028/

相关文章:

java - JComponent contains 方法在 JTable 的 MouseEvent 操作中不起作用

java - 我可以在 Java 中聚合、代理或模仿 @SuppressWarnings 吗?

java - 如果stream().filter为空

javascript - protractor-html-screenshot-reporter 没有显示报告文件中执行的所有测试

php - 如何测试 WebSocket + PHP 应用程序?

java - 如何从 Java(通过 JNDI)创建一个新的 Active Directory 帐户?

java - 如何在 Java 类中创建一个只能从另一个类访问的方法

java - 为什么会出现这些 Hazelcast 警告?

java - 使用 @Preauthorize 多个 Controller 进行注释时出现 Spring Security 错误

testing - 自动化测试框架