SpringFramework4系列之SpringTest:(一)Spring4整合Junit


構建Spring 應用以後呢,編寫單元測試就顯得比較麻煩了,由於絕大部分的類都交給了spring託管了,須要人爲的去加載spring的配置文件等等,或者須要編碼去從spring 哪裏獲得某個類的實例等。
java

1.1 整合SpringTest以前的單元測試編碼spring

public class TestDemo {
    private static DBDao dbDao;
    private Object[] testData;

    @BeforeClass
    public static void setUpBeforeClass() throws NamingException {    
        // Initialize Spring Context
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        dbDao= context.getBean(DBDao .class);

    }

    @AfterClass
    public static void tearDownAfterClass() {}

    @Before
    public void setUp() {
    //prepare test data here
    testData =  {.........};
    }

    @After
    public void tearDown() {
    }

    @Test
    public void testSave() {
        dbDao.save(testData)
    }
}

使用SpringTest 整合JUnit

使用SpringTest整個JUnit,也是把Junit的框架整合到Spring容器中,交給spring來託管了,是代碼更簡潔,同時 SpringTest 也提供了許多組件的支持 好比 JDBC的測試, JNDI的測試,以及不少的Mock方法,足以知足J2EE的單元測試的須要了。框架

準備Maven的依賴座標

    編寫單元測試 須要 Junit 和SpringTest的jar包依賴,maven構建工具會自行解決依賴關係,因此 SpringTest 依賴的 SpringCore 會被自行導入。maven

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>${project.dependency.org.junit}</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>${project.dependency.spring.core}</version>
    <scope>test</scope>
</dependency>

建立測試類

    與常規的測試類的區別在於,使用了註解RunWith(SpringJUnit4ClassRuner.class)來聲明使用Spring的 TestRunner類,同時呢使用ContextConfiguration註解 來聲明 須要加載的 配置文件的路勁,這樣一來就能夠不用自行編碼去加載配置文件啦。工具

    同時咱們還能夠發現 測試依賴的類 也被打上註解@Autowired 實行自動裝填。單元測試

   總體的結構很簡潔了。
測試

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:spring-config-test.xml")
public class TestDemo {
    @Autowired
    private DBDao dbDao;
    private Object[] testData;

    @BeforeClass
    public static void setUpBeforeClass() throws NamingException {}

    @AfterClass
    public static void tearDownAfterClass() {}

    @Before
    public void setUp() {
    //prepare test data here
    testData =  {.........};
    }

    @After
    public void tearDown() {
    }

    @Test
    public void testSave() {
        dbDao.save(testData)
    }
}
相關文章
相關標籤/搜索