【问题标题】:Annotation present: still no bean found in testing存在注释:在测试中仍然没有找到 bean
【发布时间】:2014-05-01 20:02:32
【问题描述】:

班级

@Component
public class PropertyReader {

    public PropertyReader() {
    }

    @Value("${spring.active.profiles")
    private String profile;

    @Nonnull
    public String getProfile() {
        return profile;
    }
}

测试

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader=AnnotationConfigContextLoader.class)

public class PropertyReaderTest {

    @Autowired
    private PropertyReader propertyReader;
    @Test
    public void testGetProfile() throws Exception {
        System.out.printf(System.getProperty("spring.active.profiles"));
        assertEquals("development", propertyReader.getProfile());
    }
}

依赖

     <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.0.3.RELEASE</version>
        </dependency>
    </dependencies>
   <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>4.0.3.RELEASE</version>
            <scope>test</scope>
        </dependency>

测试失败

Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.yahoo.pryme_services.external_services.ifs.PropertyReader com.yahoo.pryme_services.external_services.ifs.PropertyReaderTest.propertyReader; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.yahoo.pryme_services.external_services.ifs.PropertyReader] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

我错过了什么?

附:春天的一天

【问题讨论】:

    标签: java spring


    【解决方案1】:

    固定

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(classes = PropertyReader.class,loader=AnnotationConfigContextLoader.class)
    
    public class PropertyReaderTest {
    
        @Autowired
        private PropertyReader propertyReader;
        @Test
        public void testGetProfile() throws Exception {
            System.out.printf(System.getProperty("spring.active.profiles"));
            assertEquals("development", propertyReader.getProfile());
        }
    }
    

    和

    @Component
    public class PropertyReader {
    
        public PropertyReader() {
        }
    
        @Value("#{systemProperties['spring.active.profiles']}")
        private String profile;
    
        @Nonnull
        public String getProfile() {
            return profile;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2022-06-28
      • 2016-05-27
      • 1970-01-01
      • 2014-11-18
      • 1970-01-01
      • 1970-01-01
      • 2021-12-02
      • 2019-06-23
      • 1970-01-01
      相关资源
      最近更新 更多