美文网首页
Spring自动填充Bean 与 Junit4.12测试

Spring自动填充Bean 与 Junit4.12测试

作者: 怪诞史努比 | 来源:发表于2017-08-24 00:12 被阅读0次

    8.24打卡
    今天学到了Spring的自动填充Bean,感觉比显示填充更有逼格- -

    粗略作法如下

    1. 首先在创建的Bean上添加@Component注解
    2. 创建一个配置类,并给它添加@Configuration 和@ComponentScan 注解
    3. 创建配置类的junit测试,使用Junit的@Test进行测试

    1. 首先创建Bean

    CompactDisc接口
    public interface CompactDisc {
        void play();
    }
    
    
    一张CD(Bean):SgtPeppers
    @Component
    public class SgtPeppers implements CompactDisc {
    
        private String title = "Sgt. Pepper's Lonely Hearts Club Band";
        private String artist = "The Beatlea";
    
        @Override
        public void play() {
    
            System.out.print("Playing " + title + " by " + artist + "\n");
    
    
        }
    }
    
    MediaPlayer接口
    public interface MediaPlayer {
    
        void play();
    }
    
    
    CD播放器(Bean):用于播放SgtPeppers
    @Component
    public class CDPlayer implements MediaPlayer {
    
        private CompactDisc cd;
    
    
        // 表明当Spring创建CDPlayer bean的时候,会通过这个构造器来进行实例化 并且会传入一个可设置给CompactDisc类型的bean
        @Autowired
        public CDPlayer(CompactDisc cd){
            this.cd = cd;
        }
    
        @Override
        public void play() {
            cd.play();
        }
    }
    

    2. 创建配置类

    // @Configuration 的注解类表示 这是一个配置类
    @Configuration
    // @ComponentScan 这个注解能够在Spring中启用组件扫描 ,在没有别的配置时会默认扫描与配置类相同的包-》soundsystem,在该包下查找带有@Component 注解的类
    @ComponentScan
    public class CDPlayerConfig {
    }
    
    

    3. Junit测试,是否成功自动装配Bean

    @RunWith(SpringJUnit4ClassRunner.class)
    // 以便自动创建Spring的应用上下文
    @ContextConfiguration(classes = CDPlayerConfig.class)
    // @ContextConfiguration 会告诉它需要在 CDPlayerConfig 中加载配置
    public class CDPlayerConfigTest { 
    
        // @Rule 用于扩展Junit
        @Rule
        public final SystemOutRule log = new SystemOutRule().enableLog();//用于收集控制台输出,并用assert断言查看标准输出的差别
    
        @Autowired
        private MediaPlayer player;
    
        @Autowired
        private CompactDisc cd;
    
        // 测试是否自动装配
        @Test
        public void cdShouldNotBeNull() {
            assertNotNull(cd);
        }
    
        //  测试控制台输出是否与期望一致
        @Test
        public void play(){
            player.play();
    
            assertEquals(
                    "Playing Sgt. Pepper's Lonely Hearts Club Band by The Beatlea\n",
                    log.getLog());
    
        }
    
    } 
    

    最终结果

    image.png

    相关文章

      网友评论

          本文标题:Spring自动填充Bean 与 Junit4.12测试

          本文链接:https://www.haomeiwen.com/subject/mdtarxtx.html