Spring整合JUnit

海浪星空發表於2020-11-21

Spring整合JUnit


我們都知道程式的入口,是main()方法。在JUnit測試中整合了一個main()方法,該方法會判斷當前測試類中哪些方法有@Test註解,junit就會讓有Test註解的方法執行,但是junit不會管我們是否採用了spring框架,也根本不知道我們是否使用了spring框架,所以在使用JUnit 的init()方法將“讀取配置檔案並建立核心容器”這部分共同程式碼提到一起的時候,Junit不會為我們讀取配置檔案和建立核心 容器。

問題來了,我們如何讓Junit知道我們使用了spring框架。(Spring整合JUnit)

  1. 匯入Spring整合junit的jar座標
   <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.0.2.RELEASE</version>
        </dependency>
        
  1. 使用JUnit提供的一個註解把原有的main()方法替換掉,替換成spring提供的main() (@Runwith註解)
@RunWith(SpringJUnit4ClassRunner.class)
  1. 告知spring的執行器,spring和ioc建立是基於xml還是註解,並且說明位置(@ContextConfiguration)
    @ContextConfiguration :
    Locations:指定xml檔案的位置,加上classpath關鍵字:表示在類路徑下
    classes:表示註解類所在的位置
@ContextConfiguration(classes = SpringConfiguration.class)
/**
 * 使用Junit單元測試:測試我們的配置
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfiguration.class)

public class AccountServiceTest {

    @Autowired
    private  IAccountService as;

    @Test
    public void testTranfer() {
    as.tranfer("aaa","bbb",100f);
    }
}

相關文章