連接 JUnit 框架

為了測試 Java 代碼,我們有一個很棒的框架,稱為JUnit。它運行良好,不斷更新,非常受歡迎,當然 Intellij IDEA 與它緊密集成。

現在每個人都在使用這個框架的第五個版本——JUnit 5,儘管在很多項目中你仍然可以找到它的第四個版本。它們並沒有太大的不同,但無論如何我們都會看一下最新的。我想當你開始積極編寫測試時,你會贊同我的選擇。

那麼,如何將JUnit添加到項目中呢?學習 Maven 後,這將很容易:只需將此代碼添加到您的 pom.xml 中:

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
	<version>5.8.1</version>
	<scope>test</scope>
</dependency>

順便說一句,如果你想讓 Maven 在構建階段(測試階段)運行你的測試,那麼你需要再添加一個片段到 pom.xml:

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
	<version>2.19.1</version>
	<dependencies>
    	<dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-surefire-provider</artifactId>
            <version>1.3.2</version>
    	</dependency>
	</dependencies>
</plugin>

@Test註解

假設您有一個要測試的課程。做這個的最好方式是什麼?讓我們從一些例子開始,因為很難測試一個抽像類:)

假設我們有一個可以執行 4 種基本運算的計算器類:加法、減法、乘法和除法。讓我們寫一下:

class Calculator {
    	public int add(int a, int b) {
        	return a+b;
    	}

    	public int sub(int a, int b) {
        	return a-b;
    	}

    	public int mul (int a, int b) {
        	return a*b;
    	}

    	public int div(int a, int b) {
        	return a/b;
    	}
}

我們想測試這個類的方法。你永遠不知道,將來他們會改變一些東西,一切都會停止工作。我們如何為它編寫測試?

我們需要創建另一個類。為此,它們通常採用相同的名稱並添加 Test 後綴。對於每種方法,您必須至少添加一種測試方法。例子:

class CalculatorTest {
   	@Test
    	public void add() {
    	}
   	@Test
    	public void sub() {
        }
   	@Test
    	public void mul() {
    	}
   	@Test
    	public void div() {
    	}
}

過去曾要求方法名稱以單詞test開頭,但這不再是必需的。

JUnit 測試示例

讓我們寫一些例子,我們將在其中測試我們的CalculatorTest類的方法:

class CalculatorTest {
   	@Test
    	public void add() {
        	Calculator calc = new Calculator();
        	int result = calc.add(2, 3);
        	assertEquals(5, result);
    	}

   	@Test
    	public void sub() {
        	Calculator calc = new Calculator();
        	int result = calc.sub(10, 10);
        	assertEquals(0, result);
        }

   	@Test
    	public void mul() {
        	Calculator calc = new Calculator();
        	int result = calc.mul(-5, -3);
        	assertEquals(15, result);
    	}

   	@Test
    	public void div() {
        	Calculator calc = new Calculator();
        	int result = calc.div(2, 3);
        	assertEquals(0, result);
    	}
}

這就是典型的 JUnit 測試的樣子。有趣的是:這裡使用了特殊方法assertEquals():它比較傳遞給它的參數,正如其名稱中的 equals 一詞所示。

如果傳遞給assertEquals() 的參數不相等,該方法將拋出異常並且測試將失敗。此異常不會阻止其他測試運行。