常用的網絡測試軟件「java測試工具有哪些」

junit是一個優秀的開源的java單元測試框架,也是目前比較流行且使用頻率比較高的一款,今天我們就來講講junit怎麼用。

junit主要用於白盒測試、回歸測試、單元測試。

首先我們來新建工程,還是跟原來一樣建立。建立之後看看pom.xml文件,已經默認的加入了junit的依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

看看我們建立的工程,idea都給我們生成了什麼樣的目錄結構

這麼好用的java單元測試工具,你還在猶豫什麼

我們的junit單元測試文件就放在test/java下面,我們先看一個基礎用法,在Lesson9ApplicationTest裡面增加一個方法:

@SpringBootTest
@RunWith(SpringRunner.class)//使用SpringRunner加載上下文
public class Lesson9ApplicationTests {
    @Test//這個是一個test單元測試文件
    public void test1() {
        int num = new Integer(1);
        Assert.assertEquals(num,1);
    }
}

在這個方法的左邊會有響應的圖標,第一個葉子樣的圖標標註這個是一個springboot的測試文件,在啟動的時候能看到我們正常啟動Application的banner圖標,說明加載了springboot的上下文。

我們直接在第二個圓形√加三角形的圖標點擊,就能運行了。

這麼好用的java單元測試工具,你還在猶豫什麼
這麼好用的java單元測試工具,你還在猶豫什麼

junit連常用的註解

  1. @RunWith:標識為JUnit的運行環境;
  2. @SpringBootTest:獲取啟動類、加載配置,確定裝載Spring Boot;
  3. @Test:聲明需要測試的方法;
  4. @BeforeClass:針對所有測試,只執行一次,且必須為static void;
  5. @AfterClass:針對所有測試,只執行一次,且必須為static void;
  6. @Before:每個測試方法前都會執行的方法;
  7. @After:每個測試方法前都會執行的方法;
  8. @Ignore:忽略方法;

我們一般使用@Test的註解基本就差不多了,一般@BeforeClass會用於加載配置,而@AfterClass一般會用於釋放資源。

上面的代碼有一個陌生的Assert斷言,這個東西是幹嘛的呢,簡單的可以理解為if條件。斷言裡面的值應該返回什麼樣的值。Assert.assertEquals(num,1)。

這個你可以理解為if(num==1)System.out.println(“ok”);但是這個方法有很多種重載的類

  • assertTrue/False 判定第一個條件是true還是false
  • assertEquals 接收兩個參數,第一個是參數值,第二個是希望返回的值
  • assertNotEquals 這個跟上一個方法恰好相反,相當於if(param!=param2)
  • assertSame/NotSame 判定兩個變量是否指向同一個內存地址
@Test
public void test2() {
    List<String> list1 = Arrays.asList("a", "b");
    List<String> list2 = Arrays.asList("a", "b");
    List<String> list3 = list2;

    Assert.assertEquals(list1,list2);//通過
    Assert.assertEquals(list3,list2);//通過
    Assert.assertSame(list3,list2);//通過
    Assert.assertSame(list1,list2);//不通過,因為list1和list2分別指向不同的內存地址
}

web模擬

我們在@SpringBootTest註解上面加上使用隨機端口啟動

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@Autowired
private TestRestTemplate testRestTemplate;

@Test
public void test3() throws URISyntaxException {
    String result = testRestTemplate.getForObject("/demo/test1", String.class);
    Assert.assertEquals(result,"hello junit test");
}

TestRestTemplate 是不是很熟悉,是的Springboot還為RestTemplate建立了專門的測試類。

注意:一定要使用隨機端口啟動,否則執行失敗。但是筆者感覺這個專門寫個測試類很麻煩,還不如直接使用postman測試,你們覺得呢?

數據庫測試

@Test
@Transactional
public void test4() {
    User user = new User();
    user.setName("abc");
    user.setAge(19);
    user.setBirthday(new Date());
    userJpa.save(user);
    Assert.assertTrue(user.getId()!=null);
    Assert.assertNotNull(user.getId());
}

注意:如果不想污染數據庫,可以加上@Transactional,執行成功之後數據庫事務會回滾,不會將數據真正插入到數據庫中。

idea為我們快速的創建test單元測試文件提供了快捷方式

這麼好用的java單元測試工具,你還在猶豫什麼

選中需要進行單元測試的方法,右鍵–>go to–>Test就會為我們創建單元測試文件。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/209126.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-08 15:25
下一篇 2024-12-08 15:25

相關推薦

發表回復

登錄後才能評論