我正在使用 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/