項目太大,不好直接測整個項目,一般都是切割成多個單元,單獨測試,即單元測試。
直接在原項目上測試,會把項目改得亂七八糟的,一般是單獨寫測試代碼。
進行單元測試,這就需要集成JUnit。
(1)在pom.xml中添加JUnit的依賴
<!--JUnit的起步依賴--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <!--指定作用域為test,此依賴只在test時起作用--> <scope>test</scope> </dependency>
使用骨架、Spring Initializr創建項目時,往往自動導入了Junit的依賴,看一下pom.xml中有沒有,沒有就導入。
注意要設置<scope>為test。
(2)在src/test/java中寫單元測試
src/main/用來寫項目,java放.java文件,resources放資源文件(根目錄下放application.yml,static下放靜態資源,templates下放模板引擎)。
src/test/用來寫項目測試,java放單元測試,resources放資源文件。
把src/main/resources中的內容拷到src/test/resources,沒有resources文件的就自己新建。
單元測試的類名一般是在原類名后加Test。
比如我要寫com.chy.mapper.UserMapper的單元測試,在src/test/java下新建com.chy.mapper.UserMapperTest,包名保持一致,類名加Test。
@RunWith(SpringRunner.class) @SpringBootTest(classes = App.class) //引導類的class對象 public class UserMapperTest { @Autowired //自動注入要測試的類 private UserMapper userMapper; @Test public void queryUserByIdTest(){ //測試該類中的方法 User user=userMapper.queryUserById(1); System.out.println(user); } }
把要測試的類寫成成員變量,使用@Autowired注入。
要測該類中的哪個方法,就寫一個對應的方法來測試,在方法上標注@Test。
方法名一般是原方法名+Test。如果只測試一個方法,常把方法名直接寫成test。
點左邊的三角進行測試。
有些方法需要注入一些值,把要注入的值寫成成員變量,對象用@Autowired注入,基本類型用@Value直接注入值。
如果需要在測試方法執行前后做一些處理:
@Before public void before(){ } @Test public void test(){ } @After public void after(){ }
這個測試類中的所有測試方法都會執行前處理、后處理。
一般要保留測試代碼,比如要測試queryUserById()、updateUserById(),是寫對應的2個測試方法,不是先寫queryUserById()來測試,測完就在這個方法的基礎上改改,改成其他方法的測試,不是這樣的。
同理,測試類都是在對應位置寫、單獨寫,包也要保留,這些測試合起來就是整個項目的測試。