【软件测试】Junit入门
写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文!
本博客全网唯一合法URL:http://www.cnblogs.com/acm-icpcer/p/8931406.html
待测试的三角形类代码:
package test1; public class triangle_class1 { public static class triangle1{ private int a,b,c; triangle1(int x1,int x2,int x3){ set_data(x1,x2,x3); } //0 public boolean set_data(int x1,int x2,int x3){ a=x1; b=x2; c=x3; return true; } //1 public boolean edge_legal(){ if((a>200||a<=0)||(b>200||b<=0)||(c>200||c<=0)){ return false; } else return true; } //2 public boolean is2biggerthan1(){ if((a+b>c)||(c+b>a)||(a+c>b)){ return true; } else return false; } //3 public boolean istriangle(){ if(edge_legal()&&is2biggerthan1()){ return true; } else return false; } //4 public boolean is_eage_equal(){ if((a==b)||(a==c)||(c==b)){ return true; } else return false; } //5 public int howmany_eage_equal(){ int result=0; if(a==b) result++; if(a==c) result++; if(c==b) result++; return result; } //6 public boolean is_right_angle(){ if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(c*c+b*b==a*a)){ return true; } else return false; } //7 public boolean is_right_triangle(){ return is_right_angle(); } //8 public boolean is_all_edges_equal(){ if((a==b)&&(a==c)&&(c==b)) return true; else return false; } //9 /*return value explanations: *1:is not a legal triangle *2:all edges equal triangle *3:only 2 edges equal *4:right angle triangle *5:等腰直角三角形 *6:normal triangle * */ public int finaltest(){ if(!istriangle()) return 1; else if(is_all_edges_equal()) return 2; else if((!is_all_edges_equal())&&is_eage_equal()) return 3; else if(is_right_triangle()) return 4; else if(is_eage_equal()&&is_right_triangle()) return 5; else return 6; } } /* public static void main(){ triangle1 obj=new triangle1(2,2,2); System.out.println(obj.finaltest()); }*/ }
在同一个包内创建junit测试代码:
package test1; import static org.junit.Assert.*; import org.junit.Assert; import org.junit.Test; import test1.triangle_class1.triangle1; public class triangle1Test { @Test public void test1() { triangle1 obj1=new triangle1(2,2,3); assertEquals(true,obj1.edge_legal()); triangle1 obj2=new triangle1(3,4,5); assertEquals(3,obj2.finaltest()); } /* public void test2() { int[][] data={ {2,2,3}, {3,4,5}, {210,3,3} }; for(int i=0;i<3;i++){ int x=data[i][0],y=data[i][1],z=data[i][2]; triangle1 obj1=new triangle1(x,y,z); Assert.assertEquals(true,obj1.edge_legal()); } } */ }
junit测试文件的创建方法如下:右键点击要测试的代码文件,选择new中的Junit Test Case即可创建,注意测试代码的主类名字必须是被测试类的名字+Test。
运行测试用例代码的方法:右键junit代码文件,run as:junit test即可。
若测试用例代码全部通过则显示绿条:
只要测试代码有一句没通过则显示红条,双击下方的failure trace中的详细信息可以知道具体哪一句代码没通过。
测试用例:
用例ID |
输入数据 |
预期输出 |
实际输出 |
是否通过 |
备注 |
001 |
2,2,3 |
True |
True |
Yes |
|
002 |
3,4,5 |
直角三角形 |
直角三角形 |
Yes |
|
003 |
3,3,3 |
等边三角形 |
等边三角形 |
Yes |
|
004 |
4,4,5 |
等腰三角形 |
等腰三角形 |
Yes |
|
005 |
3,4,5 |
直角三角形 |
直角三角形 |
Yes |
|
006 |
2,4,5 |
普通三角形 |
普通三角形 |
Yes |
|
总之,第一次使用软件测试工具来测试代码,以往测试,我一般喜欢设置断点,或者debbug调试,linux下就一般使用gdb,从来没使用过junit这样集成在开发环境里的编程测试工具。我不是很习惯这种测试工具,可能是还没用惯,感觉这类工具不实用,因为涉及到编程去进行测试的话必然会增加开发负担。
tz@COI HZAU
2018/4/24