I'm using Randoop to generate Junit and it is always passing null values when the parameter is not a premitive type for example i have class ClassA which has methods with non-premitive type as parameter for example when the mehtod methodString(String str, Entity entity) is tested the Junits generated has null values for Entity value passed and it does not create a valid object that can be passed.
Edit: I'm using eclipse to run the tests so i have added the necessary jars needed for running Randoop in classpath and below are the args i passed
gentests --testclass=test.ClassA --time-limit=60
Note: i'm not able to add images yet. so i'm not able to share the eclipse run command window.
How to configure Randoop to pass non null values for Junit testing.
ClassA
package test;
import java.util.Calendar;
public class ClassA {
public void method(String str, Calendar date) {
String a ="a";
String b ="b";
String c ="c";
String d ="d";
if(a.equals(str)) {
System.out.println("True");
}else if(a.equals(str)) {
System.out.println("True");
}else if(c.equals(str)) {
System.out.println("True");
}else if(b.equals(str)) {
System.out.println("True");
}else if(d.equals(str)) {
System.out.println("True");
}
}
public void method2(String str, Entity entity) {
String a ="a";
String b ="b";
String c ="c";
String d ="d";
if(a.equals(str)) {
System.out.println("True");
}else if(a.equals(str)) {
System.out.println("True");
}else if(c.equals(str)) {
System.out.println("True");
}else if(b.equals(str)) {
System.out.println("True");
}else if(d.equals(str)) {
System.out.println("True");
}
if(entity.getName().equals("Sting")) {
System.out.println("name");
} else if (entity.getEmail().equals("Sting")){
System.out.println("email");
}
}
}
Entity Class
package test;
public class Entity {
private String name;
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Sample Junit Generated
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runners.MethodSorters;
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class RegressionTest3 {
public static boolean debug = false;
@Test
public void test001() throws Throwable {
if (debug)
System.out.format("%n%s%n", "RegressionTest3.test001");
test.ClassA classA0 = new test.ClassA();
java.util.Calendar calendar2 = null;
classA0.method("hi!", calendar2);
java.util.Calendar calendar5 = null;
classA0.method("hi!", calendar5);
java.util.Calendar calendar8 = null;
classA0.method("", calendar8);
java.lang.Class<?> wildcardClass10 = classA0.getClass();
java.util.Calendar calendar12 = null;
classA0.method("hi!", calendar12);
java.lang.Class<?> wildcardClass14 = classA0.getClass();
java.util.Calendar calendar16 = null;
classA0.method("hi!", calendar16);
java.util.Calendar calendar19 = null;
classA0.method("hi!", calendar19);
test.Entity entity22 = null;
try {
java.lang.String str23 = classA0.methodString("hi!", entity22);
org.junit.Assert.fail("Expected exception of type java.lang.NullPointerException; message: null");
} catch (java.lang.NullPointerException e) {
}
org.junit.Assert.assertNotNull(wildcardClass10);
org.junit.Assert.assertNotNull(wildcardClass14);
}
@Test
public void test002() throws Throwable {
if (debug)
System.out.format("%n%s%n", "RegressionTest3.test002");
test.ClassA classA0 = new test.ClassA();
java.util.Calendar calendar2 = null;
classA0.method("hi!", calendar2);
java.util.Calendar calendar5 = null;
classA0.method("hi!", calendar5);
java.lang.Class<?> wildcardClass7 = classA0.getClass();
java.lang.Class<?> wildcardClass8 = classA0.getClass();
java.util.Calendar calendar10 = null;
classA0.method("hi!", calendar10);
java.util.Calendar calendar13 = null;
classA0.method("", calendar13);
java.util.Calendar calendar16 = null;
classA0.method("hi!", calendar16);
java.util.Calendar calendar19 = null;
classA0.method("", calendar19);
java.util.Calendar calendar22 = null;
classA0.method("", calendar22);
java.util.Calendar calendar25 = null;
classA0.method("", calendar25);
org.junit.Assert.assertNotNull(wildcardClass7);
org.junit.Assert.assertNotNull(wildcardClass8);
}
@Test
public void test003() throws Throwable {
if (debug)
System.out.format("%n%s%n", "RegressionTest3.test003");
test.ClassA classA0 = new test.ClassA();
java.util.Calendar calendar2 = null;
classA0.method("", calendar2);
java.util.Calendar calendar5 = null;
classA0.method("", calendar5);
java.lang.Class<?> wildcardClass7 = classA0.getClass();
java.util.Calendar calendar9 = null;
classA0.method("", calendar9);
java.lang.Class<?> wildcardClass11 = classA0.getClass();
java.lang.Class<?> wildcardClass12 = classA0.getClass();
java.lang.Class<?> wildcardClass13 = classA0.getClass();
java.util.Calendar calendar15 = null;
classA0.method("hi!", calendar15);
java.util.Calendar calendar18 = null;
classA0.method("", calendar18);
test.Entity entity21 = null;
try {
classA0.method2("", entity21);
org.junit.Assert.fail("Expected exception of type java.lang.NullPointerException; message: null");
} catch (java.lang.NullPointerException e) {
}
org.junit.Assert.assertNotNull(wildcardClass7);
org.junit.Assert.assertNotNull(wildcardClass11);
org.junit.Assert.assertNotNull(wildcardClass12);
org.junit.Assert.assertNotNull(wildcardClass13);
}