關於spring項目的單例測試

這裏是小知識啦,由於每次都要找之前的項目,這裏記錄一下,免得之後麻煩。java

咱們在作spring項目的時候,啓動的時候spring容器確定是要注入不少的類,這些在單例的時候比較麻煩,要啓動整個項目,加載spring容器才能正確處理各個實例之間的依賴關係。spring

這裏咱們使用junit4來作單例猜想,相比於junit3的好處就是,junit4加入大量的註解功能,使得測試起來更加的方便快捷。app

首先咱們須要兩個主要的jar包:junit四、spring-test,固然spring其餘須要的包這裏就不在贅述,按照本身的項目去添加便可。單元測試

好比說我要測試這個方法:
測試

@Service
public class EmployeeService {

    @Autowired
    private EmployeeMapper employeeMapper;

    public Employee findEmployee(int id) {
        return employeeMapper.selectById(id);
    }
}

由於這個方法裏面有依賴關係,因此要啓動spring的容器。還有的人確定說咱們不須要依賴,直接new嘛,這種狀況在依賴關係比較複雜的狀況下並無卵用,太麻煩了。因此我是這麼作的:spa

import com.yangbo.one.base.BaseTest;
import com.yangbo.one.persistence.model.Employee;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;

@Slf4j
public class UserServiceTest extends BaseTest {

    @Autowired
    private EmployeeService employeeService;

    @Test
    public void testFindEmployee() throws Exception {
        Employee employee = employeeService.findEmployee(111);
        System.out.println("--------------------" + employee);
        log.info("用戶{}是個大傻逼,哈哈……",employee.getName());
    }
}

這裏面有個繼承關係,是爲了我在新建其餘測試類的時候,不用每次都去加註解,總之就是爲了省事。因此這裏的繼承的BaseTest是這麼寫的,這個是關鍵,以下:code

import junit.framework.TestCase;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class BaseTest extends TestCase{
}

一切就緒,只須要右鍵運行testEmployeeTest的方法便可,運行的結果以下:xml

2015-11-03 17:18:15,917 INFO [main] c.yangbo.one.service.UserServiceTest [UserServiceTest.java : 19] 用戶sfadsfa是個大傻逼,哈哈……繼承


至此,單元測試OK。簡單吧,我也不知道爲何我每次都回去找舊項目,多是由於只是知其然還不知其因此然的緣由吧!get

相關文章
相關標籤/搜索