2013-02-08 36 views
1

我有名單和值返回列表,我有興趣通過檢查返回列表是否按字母順序創建Junit測試。到目前爲止,我已經做到了這一點,但是我總是得到結果= TRUE,因爲我認爲它考慮到「MINTS ......」。所以我的目標是從列表中刪除MINTS(名稱)並檢查列表(VALUE)的訂單。從列表中刪除字符串和排序在java

從表列表

enter image description here

Junit的代碼

public void test() throws Exception 
    { 
     DataObj dao = new DataObj(); 

     HashMap<String, Object> params = new HashMap<String, Object>(); 
     params.put("code", 100); 

     List<?> values = dao.getDataObj(params, conn); 

     String previous = ""; 
     boolean result = false; 

     for (final Object vCurrent : values) 
     { 

      String current = vCurrent.toString(); 
      if (current.compareTo(previous) < 0) 
      { 
       result = false; 
       previous = current; 

      } 
      result = true; 
     } 


    } 

,如果我在做值的打印我會得到類似「薄荷糖戴夫薄荷糖成龍薄荷糖德里克.....」

+1

問題是....? – SJuan76 2013-02-08 23:44:53

回答

1

如果這應該是一個JUnit測試,那麼你應該使用JUnit「assertXxxx」的方法做低級別的測試;例如像這樣的東西

import static org.junit.Assert.*; 

    .... 

    @Test 
    public void testOrdered() { 
     DataObj dao = new DataObj(); 

     HashMap<String, Object> params = new HashMap<String, Object>(); 
     params.put("code", 100); 

     List<?> values = dao.getDataObj(params, conn); 

     String previous = ""; 
     for (final Object vCurrent : values) { 
      String current = vCurrent.toString(); 
      assertTrue("list not ordered correctly", /* this arg is optional */ 
         current.compareTo(previous) < 0); 
      previous = current; 
     } 
    } 

這完全消除了產生「結果」的需要。

3

在循環的每次迭代結束時,總是設置result = true

你可以這樣做:

String previous = ""; 
    boolean result = true; 

    for (final Object vCurrent : values) 
    { 

     String current = vCurrent.getValue(); 
     if (current.compareTo(previous) < 0) 
     { 
      result = false; 
      break; 
     } 
    }