自动化测试的整体步骤如下(目标为一个程序Triangle.java):
Triangle.java代码如下:
public class Triangle {
protected long lborderA = 0;
protected long lborderB = 0;
protected long lborderC = 0;
// Constructor
public Triangle(long lborderA, long lborderB, long lborderC) {
this.lborderA = lborderA;
this.lborderB = lborderB;
this.lborderC = lborderC;
}
/**
* check if it is a triangle
*
* @return true for triangle and false not
*/
public boolean isTriangle(Triangle triangle) {
boolean isTriangle = false;
// check boundary
if ((triangle.lborderA > 0 && triangle.lborderA <= Long.MAX_VALUE)
&& (triangle.lborderB > 0 && triangle.lborderB <= Long.MAX_VALUE)
&& (triangle.lborderC > 0 && triangle.lborderC <= Long.MAX_VALUE)) {
// check if subtraction of two border larger than the third
if (diffOfBorders(triangle.lborderA, triangle.lborderB) < triangle.lborderC
&& diffOfBorders(triangle.lborderB, triangle.lborderC) < triangle.lborderA
&& diffOfBorders(triangle.lborderC, triangle.lborderA) < triangle.lborderB) {
isTriangle = true;
}
}
return isTriangle;
}
/**
* Check the type of triangle
*
* Consists of "Illegal", "Regular", "Scalene", "Isosceles"
*/
public String getType(Triangle triangle) {
String strType = "Illegal";
if (isTriangle(triangle)) {
// Is Regular
if (triangle.lborderA == triangle.lborderB
&& triangle.lborderB == triangle.lborderC) {
strType = "Regular";
}
// If scalene
else if ((triangle.lborderA != triangle.lborderB)
&& (triangle.lborderB != triangle.lborderC)
&& (triangle.lborderA != triangle.lborderC)) {
strType = "Scalene";
}
// if isosceles
else {
strType = "Isosceles";
}
}
return strType;
}
/**
* calculate the diff between borders
*
* */
public long diffOfBorders(long a, long b) {
return (a > b) ? (a - b) : (b - a);
}
/**
* get length of borders
*/
public long[] getBorders() {
long[] borders = new long[3];
borders[0] = this.lborderA;
borders[1] = this.lborderB;
borders[2] = this.lborderC;
return borders;
}
}
1‘自动生成测试用例(利用randoop工具),得到测试用例集文件(tests.java文件):
(1) 在目标路径下放置Triangle.java;在命令界面当前路径下输入javac Triangle.java 进行编译得到文件Triangle.class;之后再新建myclass.txt文件写入类名Triangle。
(2)用randoop工具(安装配置见 java -classpath .;%RANDOOP_JAR% randoop.main.Main gentests --classlist=myclass.txt --timelimit=6 ,显示结果如下:
查看当前目录下生成两个测试用例集文件,第一步测试用例自动生成完成。如图:
查看Regression Test0.java内容如下:
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runners.MethodSorters;
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class RegressionTest0 {
public static boolean debug = false;
@Test
public void test01() throws Throwable {
if (debug)
System.out.format("%n%s%n", "RegressionTest0.test01");
Triangle triangle3 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long4 = triangle3.lborderA;
triangle3.lborderB = (short) 0;
long long9 = triangle3.diffOfBorders((long) 100, (long) (short) 1);
triangle3.lborderB = (short) 1;
org.junit.Assert.assertTrue(long4 == (-1L));
org.junit.Assert.assertTrue(long9 == 99L);
}
@Test
public void test02() throws Throwable {
if (debug)
System.out.format("%n%s%n", "RegressionTest0.test02");
Triangle triangle3 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long4 = triangle3.lborderA;
triangle3.lborderB = (short) 0;
long long9 = triangle3.diffOfBorders((long) 100, (long) (short) 1);
Triangle triangle10 = null;
try {
boolean b11 = triangle3.isTriangle(triangle10);
org.junit.Assert.fail("Expected exception of type java.lang.NullPointerException");
} catch (java.lang.NullPointerException e) {
}
org.junit.Assert.assertTrue(long4 == (-1L));
org.junit.Assert.assertTrue(long9 == 99L);
}
@Test
public void test03() throws Throwable {
if (debug)
System.out.format("%n%s%n", "RegressionTest0.test03");
Triangle triangle3 = new Triangle(100L, 10L, (long) (short) -1);
long long4 = triangle3.lborderC;
long long5 = triangle3.lborderB;
org.junit.Assert.assertTrue(long4 == (-1L));
org.junit.Assert.assertTrue(long5 == 10L);
}
@Test
public void test04() throws Throwable {
if (debug)
System.out.format("%n%s%n", "RegressionTest0.test04");
Triangle triangle3 = new Triangle((-1L), (-1L), 0L);
Triangle triangle7 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long8 = triangle7.lborderA;
triangle7.lborderB = (short) 0;
Triangle triangle14 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long15 = triangle14.lborderA;
java.lang.String str16 = triangle7.getType(triangle14);
long long17 = triangle14.lborderC;
java.lang.String str18 = triangle3.getType(triangle14);
long long19 = triangle14.lborderA;
org.junit.Assert.assertTrue(long8 == (-1L));
org.junit.Assert.assertTrue(long15 == (-1L));
org.junit.Assert.assertTrue("'" + str16 + "' != '" + "Illegal" + "'", str16.equals("Illegal"));
org.junit.Assert.assertTrue(long17 == 10L);
org.junit.Assert.assertTrue("'" + str18 + "' != '" + "Illegal" + "'", str18.equals("Illegal"));
org.junit.Assert.assertTrue(long19 == (-1L));
}
@Test
public void test05() throws Throwable {
if (debug)
System.out.format("%n%s%n", "RegressionTest0.test05");
Triangle triangle3 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long4 = triangle3.lborderA;
triangle3.lborderB = (short) 0;
Triangle triangle10 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long11 = triangle10.lborderA;
java.lang.String str12 = triangle3.getType(triangle10);
Triangle triangle16 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long17 = triangle16.lborderA;
triangle16.lborderB = (short) 0;
Triangle triangle23 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long24 = triangle23.lborderA;
java.lang.String str25 = triangle16.getType(triangle23);
boolean b26 = triangle3.isTriangle(triangle23);
triangle23.lborderB = 99L;
org.junit.Assert.assertTrue(long4 == (-1L));
org.junit.Assert.assertTrue(long11 == (-1L));
org.junit.Assert.assertTrue("'" + str12 + "' != '" + "Illegal" + "'", str12.equals("Illegal"));
org.junit.Assert.assertTrue(long17 == (-1L));
org.junit.Assert.assertTrue(long24 == (-1L));
org.junit.Assert.assertTrue("'" + str25 + "' != '" + "Illegal" + "'", str25.equals("Illegal"));
org.junit.Assert.assertTrue(b26 == false);
}
@Test
public void test06() throws Throwable {
if (debug)
System.out.format("%n%s%n", "RegressionTest0.test06");
Triangle triangle3 = new Triangle((-1L), (-1L), 0L);
Triangle triangle7 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long8 = triangle7.lborderA;
triangle7.lborderB = (short) 0;
Triangle triangle14 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long15 = triangle14.lborderA;
java.lang.String str16 = triangle7.getType(triangle14);
long long17 = triangle14.lborderC;
java.lang.String str18 = triangle3.getType(triangle14);
long[] long_array19 = triangle3.getBorders();
triangle3.lborderB = (-1L);
org.junit.Assert.assertTrue(long8 == (-1L));
org.junit.Assert.assertTrue(long15 == (-1L));
org.junit.Assert.assertTrue("'" + str16 + "' != '" + "Illegal" + "'", str16.equals("Illegal"));
org.junit.Assert.assertTrue(long17 == 10L);
org.junit.Assert.assertTrue("'" + str18 + "' != '" + "Illegal" + "'", str18.equals("Illegal"));
org.junit.Assert.assertNotNull(long_array19);
}
@Test
public void test07() throws Throwable {
if (debug)
System.out.format("%n%s%n", "RegressionTest0.test07");
Triangle triangle3 = new Triangle((long) (short) 0, (long) 10, (long) 100);
}
@Test
public void test08() throws Throwable {
if (debug)
System.out.format("%n%s%n", "RegressionTest0.test08");
Triangle triangle3 = new Triangle((-1L), (-1L), 0L);
triangle3.lborderA = 1;
Triangle triangle9 = new Triangle((-1L), (-1L), 0L);
Triangle triangle13 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long14 = triangle13.lborderA;
triangle13.lborderB = (short) 0;
Triangle triangle20 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long21 = triangle20.lborderA;
java.lang.String str22 = triangle13.getType(triangle20);
long long23 = triangle20.lborderC;
java.lang.String str24 = triangle9.getType(triangle20);
long[] long_array25 = triangle9.getBorders();
boolean b26 = triangle3.isTriangle(triangle9);
triangle3.lborderA = (byte) 1;
org.junit.Assert.assertTrue(long14 == (-1L));
org.junit.Assert.assertTrue(long21 == (-1L));
org.junit.Assert.assertTrue("'" + str22 + "' != '" + "Illegal" + "'", str22.equals("Illegal"));
org.junit.Assert.assertTrue(long23 == 10L);
org.junit.Assert.assertTrue("'" + str24 + "' != '" + "Illegal" + "'", str24.equals("Illegal"));
org.junit.Assert.assertNotNull(long_array25);
org.junit.Assert.assertTrue(b26 == false);
}
@Test
public void test09() throws Throwable {
if (debug)
System.out.format("%n%s%n", "RegressionTest0.test09");
Triangle triangle3 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long4 = triangle3.lborderA;
triangle3.lborderB = (short) 0;
long long9 = triangle3.diffOfBorders((long) 100, (long) (short) 1);
Triangle triangle13 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long14 = triangle13.lborderA;
triangle13.lborderB = (short) 0;
Triangle triangle20 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long21 = triangle20.lborderA;
java.lang.String str22 = triangle13.getType(triangle20);
Triangle triangle26 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long27 = triangle26.lborderA;
triangle26.lborderB = (short) 0;
Triangle triangle33 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long34 = triangle33.lborderA;
java.lang.String str35 = triangle26.getType(triangle33);
boolean b36 = triangle13.isTriangle(triangle33);
java.lang.String str37 = triangle3.getType(triangle13);
triangle3.lborderC = (byte) 0;
long long40 = triangle3.lborderC;
org.junit.Assert.assertTrue(long4 == (-1L));
org.junit.Assert.assertTrue(long9 == 99L);
org.junit.Assert.assertTrue(long14 == (-1L));
org.junit.Assert.assertTrue(long21 == (-1L));
org.junit.Assert.assertTrue("'" + str22 + "' != '" + "Illegal" + "'", str22.equals("Illegal"));
org.junit.Assert.assertTrue(long27 == (-1L));
org.junit.Assert.assertTrue(long34 == (-1L));
org.junit.Assert.assertTrue("'" + str35 + "' != '" + "Illegal" + "'", str35.equals("Illegal"));
org.junit.Assert.assertTrue(b36 == false);
org.junit.Assert.assertTrue("'" + str37 + "' != '" + "Illegal" + "'", str37.equals("Illegal"));
org.junit.Assert.assertTrue(long40 == 0L);
}
@Test
public void test10() throws Throwable {
if (debug)
System.out.format("%n%s%n", "RegressionTest0.test10");
Triangle triangle3 = new Triangle((long) (byte) 1, (long) (short) 100, (long) (-1));
long[] long_array4 = triangle3.getBorders();
org.junit.Assert.assertNotNull(long_array4);
}
@Test
public void test11() throws Throwable {
if (debug)
System.out.format("%n%s%n", "RegressionTest0.test11");
Triangle triangle3 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long4 = triangle3.lborderA;
triangle3.lborderB = (short) 0;
Triangle triangle10 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long11 = triangle10.lborderA;
java.lang.String str12 = triangle3.getType(triangle10);
long long13 = triangle10.lborderC;
long long14 = triangle10.lborderC;
triangle10.lborderC = (-1L);
org.junit.Assert.assertTrue(long4 == (-1L));
org.junit.Assert.assertTrue(long11 == (-1L));
org.junit.Assert.assertTrue("'" + str12 + "' != '" + "Illegal" + "'", str12.equals("Illegal"));
org.junit.Assert.assertTrue(long13 == 10L);
org.junit.Assert.assertTrue(long14 == 10L);
}
@Test
public void test12() throws Throwable {
if (debug)
System.out.format("%n%s%n", "RegressionTest0.test12");
Triangle triangle3 = new Triangle((-1L), (-1L), 0L);
triangle3.lborderA = 1;
Triangle triangle9 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long10 = triangle9.lborderA;
triangle9.lborderB = (short) 0;
long long15 = triangle9.diffOfBorders((long) 100, (long) (short) 1);
long long16 = triangle9.lborderA;
java.lang.String str17 = triangle3.getType(triangle9);
Triangle triangle21 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long22 = triangle21.lborderA;
triangle21.lborderB = (short) 0;
java.lang.String str25 = triangle9.getType(triangle21);
long long28 = triangle9.diffOfBorders((long) '#', (long) (byte) 1);
org.junit.Assert.assertTrue(long10 == (-1L));
org.junit.Assert.assertTrue(long15 == 99L);
org.junit.Assert.assertTrue(long16 == (-1L));
org.junit.Assert.assertTrue("'" + str17 + "' != '" + "Illegal" + "'", str17.equals("Illegal"));
org.junit.Assert.assertTrue(long22 == (-1L));
org.junit.Assert.assertTrue("'" + str25 + "' != '" + "Illegal" + "'", str25.equals("Illegal"));
org.junit.Assert.assertTrue(long28 == 34L);
}
@Test
public void test13() throws Throwable {
if (debug)
System.out.format("%n%s%n", "RegressionTest0.test13");
Triangle triangle3 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long4 = triangle3.lborderA;
triangle3.lborderB = (short) 0;
Triangle triangle10 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long11 = triangle10.lborderA;
java.lang.String str12 = triangle3.getType(triangle10);
Triangle triangle16 = new Triangle((-1L), (-1L), 0L);
Triangle triangle20 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long21 = triangle20.lborderA;
boolean b22 = triangle16.isTriangle(triangle20);
triangle20.lborderB = (byte) 100;
long long27 = triangle20.diffOfBorders((long) (-1), (long) (byte) -1);
boolean b28 = triangle3.isTriangle(triangle20);
triangle20.lborderC = 0L;
long long31 = triangle20.lborderA;
org.junit.Assert.assertTrue(long4 == (-1L));
org.junit.Assert.assertTrue(long11 == (-1L));
org.junit.Assert.assertTrue("'" + str12 + "' != '" + "Illegal" + "'", str12.equals("Illegal"));
org.junit.Assert.assertTrue(long21 == (-1L));
org.junit.Assert.assertTrue(b22 == false);
org.junit.Assert.assertTrue(long27 == 0L);
org.junit.Assert.assertTrue(b28 == false);
org.junit.Assert.assertTrue(long31 == (-1L));
}
@Test
public void test14() throws Throwable {
if (debug)
System.out.format("%n%s%n", "RegressionTest0.test14");
Triangle triangle3 = new Triangle((-1L), (-1L), 0L);
triangle3.lborderA = 1;
Triangle triangle9 = new Triangle((-1L), (-1L), 0L);
Triangle triangle13 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long14 = triangle13.lborderA;
triangle13.lborderB = (short) 0;
Triangle triangle20 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long21 = triangle20.lborderA;
java.lang.String str22 = triangle13.getType(triangle20);
long long23 = triangle20.lborderC;
java.lang.String str24 = triangle9.getType(triangle20);
long[] long_array25 = triangle9.getBorders();
boolean b26 = triangle3.isTriangle(triangle9);
long long27 = triangle9.lborderB;
org.junit.Assert.assertTrue(long14 == (-1L));
org.junit.Assert.assertTrue(long21 == (-1L));
org.junit.Assert.assertTrue("'" + str22 + "' != '" + "Illegal" + "'", str22.equals("Illegal"));
org.junit.Assert.assertTrue(long23 == 10L);
org.junit.Assert.assertTrue("'" + str24 + "' != '" + "Illegal" + "'", str24.equals("Illegal"));
org.junit.Assert.assertNotNull(long_array25);
org.junit.Assert.assertTrue(b26 == false);
org.junit.Assert.assertTrue(long27 == (-1L));
}
@Test
public void test15() throws Throwable {
if (debug)
System.out.format("%n%s%n", "RegressionTest0.test15");
Triangle triangle3 = new Triangle((-1L), (-1L), 0L);
Triangle triangle7 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long8 = triangle7.lborderA;
boolean b9 = triangle3.isTriangle(triangle7);
long long12 = triangle7.diffOfBorders((long) (byte) 1, (long) (byte) 10);
long long13 = triangle7.lborderB;
triangle7.lborderC = 1;
org.junit.Assert.assertTrue(long8 == (-1L));
org.junit.Assert.assertTrue(b9 == false);
org.junit.Assert.assertTrue(long12 == 9L);
org.junit.Assert.assertTrue(long13 == 100L);
}
@Test
public void test16() throws Throwable {
if (debug)
System.out.format("%n%s%n", "RegressionTest0.test16");
Triangle triangle3 = new Triangle((-1L), (-1L), 0L);
Triangle triangle7 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long8 = triangle7.lborderA;
boolean b9 = triangle3.isTriangle(triangle7);
triangle7.lborderB = (byte) 100;
long long14 = triangle7.diffOfBorders((long) (-1), (long) (byte) -1);
Triangle triangle18 = new Triangle(100L, 10L, (long) (short) -1);
triangle18.lborderB = (byte) -1;
boolean b21 = triangle7.isTriangle(triangle18);
Triangle triangle25 = new Triangle((-1L), (-1L), 0L);
triangle25.lborderA = 1;
Triangle triangle31 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long32 = triangle31.lborderA;
triangle31.lborderB = (short) 0;
long long37 = triangle31.diffOfBorders((long) 100, (long) (short) 1);
long long38 = triangle31.lborderA;
java.lang.String str39 = triangle25.getType(triangle31);
java.lang.String str40 = triangle18.getType(triangle25);
org.junit.Assert.assertTrue(long8 == (-1L));
org.junit.Assert.assertTrue(b9 == false);
org.junit.Assert.assertTrue(long14 == 0L);
org.junit.Assert.assertTrue(b21 == false);
org.junit.Assert.assertTrue(long32 == (-1L));
org.junit.Assert.assertTrue(long37 == 99L);
org.junit.Assert.assertTrue(long38 == (-1L));
org.junit.Assert.assertTrue("'" + str39 + "' != '" + "Illegal" + "'", str39.equals("Illegal"));
org.junit.Assert.assertTrue("'" + str40 + "' != '" + "Illegal" + "'", str40.equals("Illegal"));
}
@Test
public void test17() throws Throwable {
if (debug)
System.out.format("%n%s%n", "RegressionTest0.test17");
Triangle triangle3 = new Triangle((long) (byte) 1, (long) (short) 100, (long) (-1));
triangle3.lborderB = (byte) 10;
long long6 = triangle3.lborderA;
org.junit.Assert.assertTrue(long6 == 1L);
}
@Test
public void test18() throws Throwable {
if (debug)
System.out.format("%n%s%n", "RegressionTest0.test18");
Triangle triangle3 = new Triangle((-1L), (-1L), 0L);
triangle3.lborderA = 1;
Triangle triangle9 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long10 = triangle9.lborderA;
triangle9.lborderB = (short) 0;
long long15 = triangle9.diffOfBorders((long) 100, (long) (short) 1);
long long16 = triangle9.lborderA;
java.lang.String str17 = triangle3.getType(triangle9);
long[] long_array18 = triangle3.getBorders();
triangle3.lborderA = 0L;
org.junit.Assert.assertTrue(long10 == (-1L));
org.junit.Assert.assertTrue(long15 == 99L);
org.junit.Assert.assertTrue(long16 == (-1L));
org.junit.Assert.assertTrue("'" + str17 + "' != '" + "Illegal" + "'", str17.equals("Illegal"));
org.junit.Assert.assertNotNull(long_array18);
}
@Test
public void test19() throws Throwable {
if (debug)
System.out.format("%n%s%n", "RegressionTest0.test19");
Triangle triangle3 = new Triangle((-1L), (-1L), 0L);
Triangle triangle7 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long8 = triangle7.lborderA;
boolean b9 = triangle3.isTriangle(triangle7);
triangle3.lborderA = 100;
long long12 = triangle3.lborderB;
org.junit.Assert.assertTrue(long8 == (-1L));
org.junit.Assert.assertTrue(b9 == false);
org.junit.Assert.assertTrue(long12 == (-1L));
}
@Test
public void test20() throws Throwable {
if (debug)
System.out.format("%n%s%n", "RegressionTest0.test20");
Triangle triangle3 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long4 = triangle3.lborderA;
triangle3.lborderB = (short) 0;
Triangle triangle10 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long11 = triangle10.lborderA;
java.lang.String str12 = triangle3.getType(triangle10);
Triangle triangle16 = new Triangle((-1L), (-1L), 0L);
Triangle triangle20 = new Triangle((long) (short) -1, (long) 100, (long) (byte) 10);
long long21 = triangle20.lborderA;
boolean b22 = triangle16.isTriangle(triangle20);
triangle20.lborderB = (byte) 100;
long long27 = triangle20.diffOfBorders((long) (-1), (long) (byte) -1);
boolean b28 = triangle3.isTriangle(triangle20);
triangle20.lborderA = 1;
long long31 = triangle20.lborderA;
org.junit.Assert.assertTrue(long4 == (-1L));
org.junit.Assert.assertTrue(long11 == (-1L));
org.junit.Assert.assertTrue("'" + str12 + "' != '" + "Illegal" + "'", str12.equals("Illega