代码之家  ›  专栏  ›  技术社区  ›  Prateek Joshi

在Spring测试中连接Bean期间,Getting package不存在

  •  0
  • Prateek Joshi  · 技术社区  · 7 年前

    我正在运行一个带有测试的简单spring应用程序,但我得到了以下错误,

    [INFO] -------------------------------------------------------------
    [ERROR] COMPILATION ERROR : 
    [INFO] -------------------------------------------------------------
    [ERROR] /home/prateek/Workspace/Java/spring_in_action/Chapter 2 : Wiring beans/src/test/java/com/prateek/spring/test/CDPlayerTest.java:[11,38] package com.prateek.spring.soundsystem does not exist
    [ERROR] /home/prateek/Workspace/Java/spring_in_action/Chapter 2 : Wiring beans/src/test/java/com/prateek/spring/test/CDPlayerTest.java:[12,38] package com.prateek.spring.soundsystem does not exist
    [ERROR] /home/prateek/Workspace/Java/spring_in_action/Chapter 2 : Wiring beans/src/test/java/com/prateek/spring/test/CDPlayerTest.java:[13,38] package com.prateek.spring.soundsystem does not exist
    [ERROR] /home/prateek/Workspace/Java/spring_in_action/Chapter 2 : Wiring beans/src/test/java/com/prateek/spring/test/CDPlayerTest.java:[21,17] cannot find symbol
      symbol:   class CompactDisc
      location: class com.prateek.spring.test.CDPlayerTest
    [ERROR] /home/prateek/Workspace/Java/spring_in_action/Chapter 2 : Wiring beans/src/test/java/com/prateek/spring/test/CDPlayerTest.java:[17,34] cannot find symbol
      symbol: class CDPlayerConfig
    [INFO] 5 errors 
    [INFO] -------------------------------------------------------------
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    

    下面是我的java类和pox。xml

    1.CDPlayerTest。JAVA

    package com.prateek.spring.test;
    
    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.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    import com.prateek.spring.soundsystem.CDPlayerConfig;
    import com.prateek.spring.soundsystem.CompactDisc;
    
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(classes = {CDPlayerConfig.class})
    public class CDPlayerTest {
    
        @Autowired
        private CompactDisc cd;
    
        @Test
        public void cdSHouldNotBeNull() {
            System.out.println("Testing..................");
            assertNotNull(cd);
        }
    }
    

    2.CDPlayerConfig。JAVA

    package com.prateek.spring.soundsystem;
    
        import org.springframework.context.annotation.ComponentScan;
        import org.springframework.context.annotation.Configuration;
    
        @Configuration
        @ComponentScan (basePackages= {"com.prateek.spring.soundsystem","com.prateek.spring.test"})
        public class CDPlayerConfig {
            public CDPlayerConfig() {
            }
        }
    

    3.歌曲。JAVA

    package com.prateek.spring.soundsystem;
    
    import org.springframework.stereotype.Component;
    
    @Component
    public class Song implements CompactDisc{
        private String title = "A random song title";
        private String artist = "Prateek Joshi";
    
        public Song() {
            // TODO Auto-generated constructor stub
        }
    
        public void play() {
            System.out.println("Playing "+title+" by "+ artist);
        }
    
    }
    

    4.光盘。JAVA

        package com.prateek.spring.soundsystem;
    
        public interface CompactDisc {
            void play();
        }
    
    
    5. pom.xml
    
    <project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.prateek.spring</groupId>
        <artifactId>component-scan</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    
        <dependencies>
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>5.0.9.RELEASE</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>5.0.8.RELEASE</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
                <version>5.0.9.RELEASE</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-context-support -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context-support</artifactId>
                <version>5.1.0.RELEASE</version>
            </dependency>
            <!-- Spring test -->
            <!-- https://mvnrepository.com/artifact/junit/junit -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>4.3.18.RELEASE</version>
            </dependency>
    
    
        </dependencies>
    
    </project>
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Mark Bramnik    7 年前

    我试着用你的pom做一个样本测试。xml:

    我已将其复制粘贴到一个示例项目中 考试通过了 (我使用了一个非常简单的样本测试,而不是spring测试):

    package com.prateek.spring;
    
    import org.junit.Assert;
    import org.junit.Test;
    
    
    public class SampleTest {
    
        @Test
        public void test() {
            System.out.println("testing");
            Assert.assertTrue( 1 + 1 == 2);
        }
    }
    

    因此,问题可能出在maven/sufrefire插件或java交互版本上,而不是pom上。

    org.apache.maven.surefire.booter.ForkedBooter 在任何测试运行之前加载(它是surefire插件的一部分)。

    在解决方案方面,我建议您检查java(Spring5至少需要Java8,顺便说一句)和maven的版本,甚至可能升级surefire插件。

    由于您没有提供任何具体的版本,因此很难说得更具体一些。