2012-08-06 169 views
-1

我是新来的JUnit测试用例的世界,我只是想知道让说,如果我开发了一个程序关于JUnit测试用例

class MapDemo1 
{static final Logger logger = Logger.getLogger(MapDemo1.class); 
    /** 
    * 
    */ 
    public static void main(String arg[]) 
    {PropertyConfigurator.configure("src/log4j.properties"); 
    logger.info("-->Map"); 
    // Map map=new TreeMap(); 

     Map map=new HashMap();//HashMap key random order. 
     // System.out.println("Amit".hashCode()); 
     map.put("Amit","Java"); 
     map.put("Amit","Javas"); 
     // map.put("mAit","J2EE"); 
     //map.put("Saral","J2rrrEE"); 
     /*map.put("ty","Spring"); 
     map.put("Anupam","Hibernate"); 
     map.put("Ravi",".Net"); 
     map.put("Saral","Andriod");//same key but different value 
     map.put("Nitin","PHP"); 
     map.put("hj","Spring1");*/ 
     System.out.println("There are "+map.size()+" elements in the map."); 
     System.out.println("Content of Map are..."); 
     Set s=map.entrySet(); 
     Iterator itr=s.iterator(); 
     while(itr.hasNext()) 
     { 
      Map.Entry m=(Map.Entry)itr.next(); 
      System.out.println(m.getKey()+"\t"+m.getValue()+"\t"+ m.hashCode()); 
      } 
] 
} 

现在请大家指教一下是JUnit测试案例,这和如何他们将被写在单独的课堂上。

回答

6

原样,这个程序是不可测试使用JUnit - 这是太小了,这一切都在一个方法。为了使其成为可测试的,你需要将它分解成只做一件事的部分。

其中一个部分可能是populateMap(),这是一种创建HashMap并添加值的方法。然后,您可以添加一个或两个调用该方法的测试,并测试地图的大小和内容。

打印输出也很难(如果不是不可能)来测试。解决这个问题的一种方法是将打印输出的代码放入接受PrintWriter作为参数的方法中。在真正的程序中,调用它并将它传递给System.out。在测试中,你可以连接到一个StringWriter一个PrintWriter调用它,然后检查StringWriter的内容。

一般情况下,你不考程序使用JUnit;你测试单位。 A 单元是一类或一小组紧密耦合的类,它为程序的其余部分提供某种明确定义的服务。例如,像StringBuilder这样的类是一个相当大且复杂的单元,希望您可以想象数十或数百个可能为其编写的测试。