如何解决此问题(Class <springjunit4classrunner>无法解析为类型)?

时间:2018-10-11 13:48:51

标签: spring maven

我使用spring和maven实现了一个简单的projetc,我的项目包含一个接口和3个类以及pom.xml文件

界面:CompactDisc.java

3个班级: SgtPeppers.java实现了CompactDisc接口

CDPlayersConfig.java是一个空类,包含自动扫描的注释

CDPlayersTest.java是用于测试弹簧容器是否工作的测试类。

我的问题是@RunWith(SpringJUnit4ClassRunner.class)和@ContextConfiguration(classes = CDPlayersConfig.class),Eclipse建议第一个注释的这一主张 Class无法解析为一种类型,并且它不理解第二个注释。

您在这里找到代码:

CompactDisc.java

     package soundsystem; 
    public interface CompactDisc {
        void play();
}

SgtPeppers.java

package soundsystem;

import org.springframework.stereotype.Component;

@Component
public class SgtPeppers implements CompactDisc{

    private String title = "Sgt. Pepper's Lonely Hearts Club Band";
    private String artist = "The Beatles";

    public void play() {

        System.out.println("Playing " + title + "by"+ artist);
    }

}

CDPlayersConfig.java

package soundsystem;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan
public class CDPlayersConfig {

}

CDPlayerTest.java

package soundsystem;

import static org.junit.Assert.assertNotNull;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.jta.SpringJtaSynchronizationAdapter;

@RunWith(SpringJUnit4ClassRunner.class)//Here is my problem
@ContextConfiguration(classes=CDPlayersConfig.class)//Here is my problem
public class CDPlayerTest {

    @Autowired
    private CompactDisc cd;

    @Test
    public void cdShouldNotBeNull() {
        assertNotNull(cd);
    }
}

pom文件中的依赖项

<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
</dependency>

<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>4.0.5.RELEASE</version>
            <scope>test</scope>
</dependency>

5 个答案:

答案 0 :(得分:2)

在Eclipse中

右键单击您的项目

选择Maven

选择更新项目

打勾

Update project config from pom.xml

Refresh workspace

Clean projects

完成此操作后,所需的库应可用于Eclipse,并且您应该能够根据需要导入类。

答案 1 :(得分:1)

按Control键并单击该类。 Eclipse将打开文件。复制程序包名称。创建一个新的import语句,然后粘贴程序包名称+类名称。问题解决了。

如果Eclipse在您按住Control键并单击时未打开文件,则说明您的类路径中没有该文件,也没有将其正确导入。

答案 2 :(得分:0)

您缺少SpringJUnit4ClassRunner和ContextConfiguration的导入(导入org.springframework ...)。这就是为什么它们未被识别的原因。

答案 3 :(得分:0)

我看不到

 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 import org.springframework.test.context.ContextConfiguration;

在您的导入部分。另外,也许您应该使用SpringRunner.class而不是SpringJUnit4ClassRunner.class

答案 4 :(得分:0)

您必须添加依赖项:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>4.3.9.RELEASE</version> 
</dependency>    

然后

import org.springframework.test.context.ContextConfiguration;