我正在使用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]
答案 0 :(得分:1)
您似乎正在混合不同(不兼容)的Spring组件版本。检查你的课程路径。
如果您使用的是Maven或Gradle等项目管理工具,请确保项目的依赖项不包含Spring工件,否则它们将由传递依赖机制获取。
如果使用Eclipse和Maven之类的IDE,则可以使用POM编辑器打开pom.xml,并在依赖关系层次结构选项卡中检查已解析的依赖关系。然后,您可以排除违规(通常较旧)的依赖关系。