Skip to content

Concrete execution fails for a static method using a static field #711

Closed
@alisevych

Description

@alisevych

Description

Static method without input parameters is using a static field inside.
Concrete execution fails with "java.lang.IllegalArgumentException: wrong number of arguments"

To Reproduce

Steps to reproduce the behavior:

  1. IntelliJ IDEA with UTBot installed is running.
  2. Turn fuzzing on // File -> Settings -> Tools -> UTbot -> select some middle Code Analysis slider position
  3. Run test generation for the following class:
public class CheckStatic {

    public final static Integer keyValue = 420;

    public static int check() {
        if (keyValue == 0) {
            return keyValue;
        } else {
            return -keyValue;
        }
    }

}

Expected behavior

Tests are supposed to be generated without errors.

Actual behavior

An error test is generated with information about an error in the concrete executor.

Visual proofs (screenshots, logs, images)

Error report:

    public void testCheck_errors() {
        // Couldn't generate some tests. List of errors:
        // 
        // 4 occurrences of:
        // Default concrete execution failed

    }

Child process error:

Transforming: org/example/CheckStatic
java.lang.IllegalArgumentException: wrong number of arguments
signature=check()I
this=null: org.example.CheckStatic
arguments={
org.example.CheckStatic@1ad9c76c: org.example.CheckStatic
}

	at org.utbot.instrumentation.instrumentation.InvokeInstrumentation.invoke-d1pmJ48(InvokeInstrumentation.kt:77)
	at org.utbot.instrumentation.instrumentation.InvokeInstrumentation.invoke(InvokeInstrumentation.kt:17)
	at org.utbot.instrumentation.instrumentation.Instrumentation$DefaultImpls.invoke$default(Instrumentation.kt:25)
	at org.utbot.framework.concrete.UtExecutionInstrumentation$invoke$$inlined$withReflection$lambda$1$1.invoke(UtExecutionInstrumentation.kt:163)
	at org.utbot.common.ThreadBasedExecutor$invokeWithTimeout$2.invoke(ThreadUtil.kt:56)
	at org.utbot.common.ThreadBasedExecutor$invokeWithTimeout$1.invoke(ThreadUtil.kt:47)
	at org.utbot.common.ThreadBasedExecutor$invokeWithTimeout$1.invoke(ThreadUtil.kt:22)
	at kotlin.concurrent.ThreadsKt$thread$thread$1.run(Thread.kt:30)

Environment

Windows 10 Pro
Gradle 6.8
JDK 8

Additional context

The example was taken from utbot-sample/src/main/java/org/utbot/examples/mock/CommonMocksExample.java - just added "static" to the clinitMockExample() definition.

Metadata

Metadata

Labels

comp-fuzzingIssue is related to the fuzzingctg-bugIssue is a bug

Type

No type

Projects

Status

Done

Relationships

None yet

Development

No branches or pull requests

Issue actions