Asserts are missing for anonymous class #1034
Copy link
Copy link
Open
Labels
comp-codegenIssue is related to code generatorIssue is related to code generatorctg-bugIssue is a bugIssue is a bug
Description
Description
If a method returns an anonymous class, the generated test method contains actual and expected, but doesn't assert them to be equal.
To Reproduce
- Run a project in IntelliJ Idea 2022.1.4 with one of the latest plugin builds from main branch
- Add the following code:
public class A {
public interface Driver {
public int getNumber(int n);
}
public Driver getDriver() {
return new Driver() {
@Override
public int getNumber(int n) {
return 2 * n - 1 ;
}
};
}
}- Use plugin to generate tests for getDriver() method.
- Open the generated test
Expected behavior
Test is supposed to contain assert of expected and actual value.
Actual behavior
Test contains actual and expected fields, but there is no assertion.
Visual proofs (screenshots, logs, images)
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.DisplayName;
import static org.utbot.runtime.utils.UtUtils.createInstance;
import static org.utbot.runtime.utils.UtUtils.setField;
public class ATest {
///region Test suites for executable A.getDriver
///region FUZZER: SUCCESSFUL EXECUTIONS for method getDriver()
@Test
@DisplayName("getDriver: arg_0 = A()")
public void testGetDriver() throws Exception {
A a = new A();
A.Driver actual = a.getDriver();
A.Driver expected = ((A.Driver) createInstance("A$1"));
setField(expected, "A$1", "this$0", a);
}
///endregion
///endregion
}Environment
Windows 10 Pro
JDK 8
Additional context
The same issue can be seen for generating tests for the following code:
public class A {
public int a, b = 10;
public List<Integer> integerStream (int c) {
return Arrays.asList(a, b, c);
}
}Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
comp-codegenIssue is related to code generatorIssue is related to code generatorctg-bugIssue is a bugIssue is a bug
Type
Projects
- StatusShow more project fieldsTodo
Activity
alisevych commentedon Oct 3, 2022
Currently UTBot compares only the state of the Objects.
That's a possible enhancement to compare the behavior of Objects.
tyuldashev commentedon Oct 4, 2023
Also generation for
examples.objects.AbstractAnonymousClass#getInstancefrom UTBot Java project could be used to demonstrate the problem. Here is one of generated test: