1. 程式人生 > >Java的Junit與debug模式入門

Java的Junit與debug模式入門

常用 ESS 導包 each unittest img row interrupt 復制

Java的Junit與debug模式入門

1.Junit的使用入門

導入eclipse內置的junit—junit—junit相應的版本,方式1如下:

技術分享圖片

方式二使用maven加載如下(見後續maven):

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.8</version>

<scope>test</scope>

</dependency>

</dependencies>

倘若需要找依賴請到官網上查找,例如如下

https://junit.org/junit5/docs/current/user-guide/

技術分享圖片

2.Junit4的常用的方法

@Test 測試方法

@Ignorde 忽略的測試方法

@Before 在每一個方法測試之前運行

@After 在每一個方法之後運行

@BeforeClass 在所有測試方法之前運行,需要的靜態的表達方式

@AfterClass 在所有測試方法之後運行,需要是靜態的表達方式

public class JUnitTest {

@After

public void init() {

System.out.println("init");

}

@Before

public void destroy() {

System.out.println("after");

}

@Test

public void test() {

System.out.println("test");

}

@BeforeClass

public static void testBeforeClass() {

System.out.println("beforeClass");

}

@AfterClass

public static void testAfaterClass() {

System.out.println("afterClass");

}

}//beforeClass before test after afterClass

所以順序是beforeClass before test after afterClass

對於junit5的常用方法(較junit4表達略有不同)

@BeforeAll 只執行一次,在所有的測試方法之前運行(類似於 BeforeClass),需要是靜態的方法。

@BeforeAll 只執行一次,在所有的測試方法之前運行(類似於 AfterClass),需要的靜態的方法

@BeforeEach 在每個測試方法之前運行,類似於(@Before)

@AfterEach 在每個測試方法之後運行,類似於(@After)

@Test

@DisplayName 更改在測試界面顯示的名稱。

@Disabled 忽略(類似於@Ignore)

public class JUnitTest {

@BeforeAll

public static void initBefore() {

System.out.println("beforeall");

}

@AfterAll

public static void destroyAfter() {

System.out.println("destroyAfter");

}

@Test

@DisplayName("testHello")

public void test(){

System.out.println("test");

}

@BeforeEach

public void testBeforeEach() {

System.out.println("beforeEach");

}

@AfterEach

public void testAfterEach() {

System.out.println("afterEach");

}

@Test

@Disabled

@DisplayName("testHello")

public void test1(){

System.out.println("test");

}

}

輸出結果依次為

Beforeall beforeEach test afterEach destroyAfter

技術分享圖片

Failures test運行錯誤

Errors 程序自身的runtime錯誤

3.Junit的斷言

public class JUnitAssert {

@Test

public void standardAssertions() {

assertEquals(2, 2);

assertEquals(4, 4, "The optional assertion message is now the last parameter."); assertTrue(‘a‘ < ‘b‘, () -> "Assertion messages can be lazily evaluated -- "

+ "to avoid constructing complex messages unnecessarily.");

}

@Test

public void groupedAssertions() {

assertAll("person",

() -> assertEquals("John", "John"),

() -> assertEquals("Doe", "Doe")

);

}

@SuppressWarnings("static-access")

@Test

public void timeoutNotExceeded() throws InterruptedException {

assertTimeout(Duration.ofSeconds(2), ()->{ new Thread().sleep(1000);});

}

@Test

public void assertWithHamcrestMatcher() {

assertThat(2 + 1, is(equalTo(3)));

assertThat(2 + 1, not(3));

/*相應還有containsString endsWith startWith

equlTo equalToIgnoringCase allOf(比某大且比某小)

anyOf(滿足一個條件即可) greatThan(大於) lessThan(小於)

closeTO 正負 hasKey(map集合) hasValue(map集合)等

這些方法導包有些麻煩,需要復制import static org.hamcrest.CoreMatchers.not後將not更改為相應的方法

*/

}

}

技術分享圖片技術分享圖片

還有很多其他的方法 ,可以相應的去https://junit.org/junit5/docs/current/user-guide/查看

4.Debug模式

技術分享圖片斷點 技術分享圖片debug測試相關按鈕,或者鼠標右鍵debug as 技術分享圖片表示運行到了這一步技術分享圖片是方法進入方法裏面,指向下一行 是方法不進入方法裏邊,技術分享圖片指向下一行,技術分享圖片運行到下一個斷點技術分享圖片從方法裏面跳出來的下一行 技術分享圖片不運行方法裏邊的後續代碼行,返回到當前方法行的起始位置。

技術分享圖片

運行相關的變量參數表

技術分享圖片

運行相關的信息

Java的Junit與debug模式入門