Skip to content

Assertions on nullable object fields in parametrized tests #252

Closed
@EgorkaKulikov

Description

@EgorkaKulikov

Description

Parametrized tests fails with NullPointerException due to incorrect assertions in them

To Reproduce

  1. Create parametrized tests with JUnit5 on CastExample.simpleCast from utbot-samples
  2. The generated code uses deepEquals to assert result object field states, but this object is null in one of the cases
@ParameterizedTest
@MethodSource("provideDataForSimpleCast")
public void parameterizedTestsForSimpleCast(CastExample castExample,
                                            CastClass castClass,
                                            CastClassFirstSucc expectedResult,
                                            Class<Throwable> expectedError
) {
    try {
        CastClassFirstSucc actual = castExample.simpleCast(castClass);
        int expectedResultZ = expectedResult.z;
        int actualZ = actual.z;
        assertEquals(expectedResultZ, actualZ);

        int expectedResultX = expectedResult.x;
        int actualX = actual.x;
        assertEquals(expectedResultX, actualX);

        int expectedResultDefaultValue = expectedResult.defaultValue;
        int actualDefaultValue = actual.defaultValue;
        assertEquals(expectedResultDefaultValue, actualDefaultValue);
    } catch (Throwable throwable) {
        assertTrue(expectedError.isInstance(throwable));
    }
}

Actual behavior

This test fails with NPE on the following set of arguments

{
    CastExample castExample = new CastExample();
    argList.add(Arguments.arguments(castExample, null, null, null));
}

The exception is

java.lang.NullPointerException
	at algorithms.casts.CastExampleTest.parameterizedTestsForSimpleCast(CastExampleTest.java:39)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)

Metadata

Metadata

Assignees

Labels

comp-codegenIssue is related to code generatorctg-bugIssue is a bugpriority-top-focusTop priority chosen by dev team

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions