Spring自動填充Bean 與 Junit4.12測試

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 Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,993評論 19 139
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,973評論 6 342
  • 本章內容: 聲明Bean 構造器注入和Setter方法注入 裝配Bean 控制bean的創建和銷毀 任何一個成功的...
    謝隨安閱讀 1,663評論 0 9
  • 2.1 Spring配置的可選方案 Spring提供了三種主要的裝配機制: 1)在XML中進行顯示配置。2)在ja...
    如一諾然閱讀 504評論 0 1
  • 在現實生活中,做任何一件稍復雜的事情都需要多人齊心協力才能做出來。比如我工作的公司,需要我們這種程序員寫代碼,需要...
    EnigmaXXX閱讀 1,478評論 0 3