2012-09-18 60 views
6

你好,我正在嘗試測試我的3種以不同方式對字符串數組進行排序的類!安裝,初始化Junit測試

我知道有一種方法可以使用一個數組,然後在每次測試中使用它們。

到目前爲止,這是我的代碼:

public class SortingTest { 

    public insertionSort is = new insertionSort(); 
    public bubbleSort bs = new bubbleSort(); 
    @Test 
    public void testBubbleSort() { 
     String [] sortedArray ={"Chesstitans", "Ludo", "Monkey", "Palle"}; 
     bs.sort(sortedArray); 
     assertArrayEquals(sortedArray, x); 
    } 
    @Test 
    public void testInsertionSort() { 


    } 
    @Test 
    public void testMergeSort() { 


    } 
    @Test 
    public void testSelectionSort() { 


    } 
    @Before 
    protected void setUp() throws Exception{ 
     String[]x ={"Ludo", "Chesstitans", "Palle", "Monkey"}; 
    } 

} 

Eventhough我試圖安裝程序和用來初始化方法它似乎沒有找到X我做了什麼錯?

問候

馬克·拉斯穆森

回答

8

你需要讓x類的成員變量SortingTest

public class SortingTest { 

    private String[] x; 

    @Before 
    public void init() { 
     x = new String {"Ludo", "Chesstitans", "Palle", "Monkey"}; 
    } 
} 
+0

所以我需要初始化它作爲一個公共變量?是不是毀了方法初始化的整個點? –

+0

如果我這樣做,它會對x數組進行第一次排序。不會所有的其他測試是無用的,因爲數組已經排序? –

+0

1修復了你的代碼,但它是完美的! :D x = new String [] {「Ludo」,「Chesstitans」,「Palle」,「Monkey」}; –

2

setUp應該初始化一些構件,其他方法可以訪問它。如果你初始化一個局部變量,它會在你退出setUp變量時丟失。

在這種情況下,良好的事物都將有兩個成員:

  • originalArray
  • sortedArray

在每個測試方法,你可以排序的originalArray和對你已經sortedArray的結果進行比較。

+0

這正是我想要的,但是我必須在每個單獨的排序方法中做到這一點嗎?每次使用新方法時,都沒有辦法讓它初始化嗎? –

+0

如果我不記得不好,就是這樣。在每個方法執行之前調用setUp(即使我不確定是否用每種測試方法再次創建測試對象)。所以在setUp中初始化它們並自由使用它們。 – helios

+0

實際上@munyengm是正確的,你可以直接在成員聲明上賦值而不需要setUp方法。 – helios

0

您需要讓x成爲類的成員,以便它在所有方法中都可見。