Skip to content

io.qameta.allure.util.AspectUtils.objectToString breaks test if parameter toString() method throws exception #191

@tdelphi

Description

@tdelphi

I'm submitting a ...

  • bug report

environment:

Allure version 2.5.0
Test framework junit4.128
Allure integration autoconfigure
Generate report using allure-gradle:2.5

Steps to reproduce

public class MyNpeClass {
  @Override
  public String toString() {
    Object o = null;
    return o.toString();
  }
}

public class ExampleTest {
    @Test
    public void testThatWillFail() {
        stepAnnotatedMethod(new MyNpeClass());
    }
    @Step
    private void stepAnnotatedMethod(MyNpeClass myNpeClass) {
        // will not reach here, because of fail during myNpeClass.toString() while processing @Step annotation
    }
}

Stacktrace

java.lang.NullPointerException
at MyNpeClass.toString(MyNpeClass.java:33)
at java.lang.String.valueOf(String.java:2994)
at java.util.Objects.toString(Objects.java:142)
at io.qameta.allure.util.AspectUtils.objectToString(AspectUtils.java:42)
at io.qameta.allure.util.AspectUtils.lambda$getParameters$0(AspectUtils.java:24)
at java.util.stream.IntPipeline$4$1.accept(IntPipeline.java:250)
at java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Streams.java:110)
at java.util.Spliterator$OfInt.forEachRemaining(Spliterator.java:693)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:545)
at java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260)
at java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:438)
at io.qameta.allure.util.AspectUtils.getParameters(AspectUtils.java:26)
at io.qameta.allure.aspects.StepsAspects.step(StepsAspects.java:43)

What happens?

test is marked as Broken in Allure report, but all the steps are green and no information on cause of error is provided.

image

What is the expected behavior?

show stacktrace in Allure report test results

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions