2013-02-08 39 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; 
     } 
    }