簡體   English   中英

使用jUnit進行測試

[英]Testing with jUnit

我有一個名為Menu.java的類,它用作我程序的接口。

在這個Menu.java類中,我有一個開關/案例塊作為我的菜單選項。

基本上,我想使用jUnit來測試該switch / case塊中每種情況的輸出,但是我一直在努力尋找做到這一點的最佳方法。

每個菜單操作最好有一個單獨的jUnit TestCase嗎? 然后使用單個TestUnit運行所有案例? 或者有更好的方法可以做到這一點嗎?

非常感謝。

通常,每個類都有一個對應的測試類。 因此,您將具有一個MenuTest.java來匹配您的Menu.java。 由於命名約定,這使您可以快速找到與特定文件關聯的測試。

然后,理想情況下,每個測試都應具有與其關聯的一種測試方法。 因此,如果您的交換機有10種情況,最終將有10種測試方法,每種情況都有一種。 這使您可以快速隔離出失敗的選項,因為您會分別獲得每個測試的反饋。

請注意,TestCase是JUnit3。如果可能,請使用JUnit 4測試(org.junit。*),這些測試帶有@Test批注。

我會為每個可能的工作流使用單個測試用例。 理想情況下,每個測試用例都會有一個斷言,遵循該指南可能更容易。 一般來說,您希望保持單元測試小而簡潔。

然后,我將所有測試用例放在同一個測試類中,只要它們屬於同一個測試類。

我將為Menu.java(MenuTest.java)創建一個類。 我會為每個菜單選項編寫一個測試用例。 如果您有GUI內容,請將其與邏輯分開。

無需測試GUI或其管道。

如果您正在測試的方法是為此交換機接收不同的參數,請考慮使用參數化測試用例。 優點是,如果交換機發生變化,更容易跟蹤需要更改的內容:

以下是它如何與TestNG一起使用 (查找JUnit的“參數化測試用例”)

// This method will provide data to any test method that declares that
// its Data Provider is named "test1"
@DataProvider(name = "test1")
public Object[][] createData1() {
 return new Object[][] {
   { "Foo", new Integer(36) },
   { "Bar", new Integer(37)},
 };
}

// This test method declares that its data should be supplied by the
// Data Provider named "test1"
@Test(dataProvider = "test1")
public void verifyData1(String n1, Integer n2) {
 System.out.println(n1 + " " + n2);
}

在您的情況下,我將使用單個測試用例的所有選項。 你需要這樣的東西:

import org.junit.Test;
import org.junit.Assert;
import your.project.Menu;

public class MenuTest {
@Test
public void testCase() {
Menu menu = new Menu();
assertEquals("1",menu.runCase("bar"));
assertEquals("2",menu.runCase("foo"));
//etc
}
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM