Junit是同极限编程中的TDD联系在一起的,所谓TDD就是Test Driven Development.
1,安装Junit
eclipse---windows--Preferences--java---Build Path ---new
Name,输入名称,随便; path:选择你下载的Junit的jar文件
2.实例
编程实现anagram,所谓anagram,是一种单词game:两个比较的单词,字符长度一样,字符顺序不一样。比如: hello,ElloH; abc,Cba就是的,但是真正的anagram是比较的英语单词,咱先比较这种简单的情况。
按照TDD思想,拿到上面的需求后,咱先不编码,先写测试case.
import static org.junit.Assert.*; import org.junit.Test; public class AnagramTest { @Test public void testWhetherAnagrams(){ Anagram a = Anagram.INSTANCE; Boolean result1 = a.whetherAnagrams("abcd", "dcBa"); Boolean result2 = a.whetherAnagrams("abcde", "dcBa"); assertEquals(true,result1); assertEquals(false,result2); } }
assertEquals(true,result)表示:参数一(true)表示我希望这个case运行的结果,用它去同参数二(result)匹配,如果相同,则这个case就通过了,否则就不通过。
上面的assertEquals我刚开始看时一直不明白是啥意思,原来那个就是用来判断结果是否正确的断言,当然,还有像什么assertTrue/assertFalse之类的,但assertEquals用得最多。
好了,上面的test case写好了,下面,咱来实现Anagram类(TDD思想就是:先整test case,再整implement)
package net.codercn; public class Anagram { public static final Anagram INSTANCE = new Anagram(); public boolean whetherAnagrams(String s1,String s2){ if(s1.length() != s2.length()){ return false; } char[] ch1 = s1.toLowerCase().toCharArray(); char[] ch2 = s2.toLowerCase().toCharArray(); Arrays.sort(ch1); Arrays.sort(ch2); return Arrays.equals(ch1, ch2); } }
好了,运行一下上面的AnagramTest,变绿了就ok了。Junit这种测试工具,最大的好处是不用再写public static void main(String[] args)这一大串东西了。