软件测试JUnit测试套件小试-三角形类型判断
1、创建测试函数
为了简便,没有写成面向对象,只是在类中提供静态函数接受三边的参数
package com.neo.service;
public class getTypeResult {
/**
* 判断三角形类型
* @param tri
* @return String 三角形类型
*/
public static String getType(int []sides){
StringBuilder type = new StringBuilder();
if( !isLegal(sides) )
return "输入越界";
if( !canMakeUpTriangle(sides))
return "不能组成三角形";
if( sideEqualNum(sides) == 3 ){
type.append("等边三角形");
return type.toString();
}
if( sideEqualNum(sides) == 2 )
type.append("等腰三角形");
if( sideEqualNum(sides) == 0 ){
if(isRightTriangle(sides)){
type.append("直角三角形");
}else{
type.append("一般三角形");
}
}
return type.toString();
}
/**
* 三边的合法校验
* @param sides
* @return true:输入合法 false:输入不合法
*/
public static boolean isLegal(int[] sides ){
if( (sides[0] > 0 && sides[0] <= 200) && (sides[1] > 0 && sides[1] <= 200) && (sides[2] > 0 && sides[2] <= 200) )
return true;
else
return false;
}
/**
* 能否组成三角形,两边和大于第三边,两边差小于第三边
* @param sides
* @return true:能组成三角形 false:不能组成三角形
*/
public static boolean canMakeUpTriangle(int[] sides){
int [] newSides = sort(sides);
if( (newSides[0] + newSides[1] > newSides[2]) &&
(newSides[2] - newSides[1] < newSides[0]) && (newSides[2] - newSides[0] < newSides[1]) )
return true;
else
return false;
}
/**
* 确定相等的边数
* @param sides
* @return 相等的边数
*/
public static int sideEqualNum(int[] sides){
if( (sides[0] == sides[1]) && (sides[1] == sides[2]) )
return 3;
if( (sides[0] == sides[1]) || (sides[0] == sides[2]) || (sides[1] == sides[2]))
return 2;
else
return 0;
}
/**
* 判断是否为直角三角形
* @param sides
* @return true 是直角三角形,false 不是直角三角形
*/
public static boolean isRightTriangle(int[] sides){
int [] newSides = sort(sides);
return ( (newSides[0]^2 + newSides[1]^2) == (newSides[2]^2) );
}
/**
* 将三边从小到大排序
* @param sides
* @return 按照增序排列的边数组
*/
public static int[] sort(int[] sides){
for(int i = 0; i < sides.length; i++){
for(int j = 0; j < sides.length - i - 1; j++){
if(sides [j] > sides[ j + 1 ]){
int temp = sides[j];
sides[j] = sides[ j + 1 ];
sides[ j + 1 ] = temp;
}
}
}
return sides;
}
}
2、创建测试类
只摘取了两个测试类,等会放到测试套件中
package com.neo.test;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
/**
* 三边合法性测试类
* @author le
*
*/
public class TestJunit1 {
int[] a0 = {-11,12,10};
int[] a1 = {192,203,190};
int[] a2 = {3,4,-6};
@Test
public void getTypeResult(){
assertEquals("输入越界", com.neo.service.getTypeResult.getType(a0));
assertEquals("输入越界", com.neo.service.getTypeResult.getType(a1));
assertEquals("输入越界", com.neo.service.getTypeResult.getType(a2));
}
}
package com.neo.test;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
/**
* 一般三角形测试类
*/
public class TestJunit2 {
int[] a0 = {1,3,5};
int[] a1 = {6,2,4};
int[] a2 = {4,8,3};
int[] a3 = {5,4,7};
@Test
public void getTypeResult(){
assertEquals("不能组成三角形", com.neo.service.getTypeResult.getType(a0));
assertEquals("不能组成三角形", com.neo.service.getTypeResult.getType(a1));
assertEquals("组成三角形", com.neo.service.getTypeResult.getType(a2));
assertEquals("三角形", com.neo.service.getTypeResult.getType(a3));
}
}
3、创建测试套件
package com.neo.test;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({
TestJunit1.class,
TestJunit2.class,
})
public class JunitTestSuite {
}
4、创建TestRunner类
package com.neo.test;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class TestRunner {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(JunitTestSuite.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println(result.wasSuccessful());
}
}