NullPointerException running equals verifier on a class.

已查看 49 次
跳至第一个未读帖子

Chris Stoner

未读,
2016年2月24日 03:35:592016/2/24
收件人 equalsverifier
I'm having the following Exception when running the verifier:

java.lang.AssertionError: java.lang.NullPointerException: 

at nl.jqno.equalsverifier.EqualsVerifier.handleError(EqualsVerifier.java:406)
at nl.jqno.equalsverifier.EqualsVerifier.verify(EqualsVerifier.java:392)
at com.ge.hc.lcs.sumfutil.asc.UmfDeviceImplTest.equalsVerifier(UmfDeviceImplTest.java:106)
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:497)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74)
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:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Caused by: java.lang.NullPointerException
at com.rti.dds.util.Enum.equals(Unknown Source)
at nl.jqno.equalsverifier.util.PrefabValues.getOther(PrefabValues.java:138)
at nl.jqno.equalsverifier.util.FieldAccessor$FieldChanger.modify(FieldAccessor.java:272)
at nl.jqno.equalsverifier.util.FieldAccessor.modify(FieldAccessor.java:163)
at nl.jqno.equalsverifier.util.FieldAccessor.changeField(FieldAccessor.java:153)
at nl.jqno.equalsverifier.util.ObjectAccessor.scramble(ObjectAccessor.java:153)
at nl.jqno.equalsverifier.util.ClassAccessor.getRedAccessor(ClassAccessor.java:261)
at nl.jqno.equalsverifier.util.ClassAccessor.getRedObject(ClassAccessor.java:251)
at nl.jqno.equalsverifier.util.PrefabValues.createAndPutInstances(PrefabValues.java:243)
at nl.jqno.equalsverifier.util.PrefabValues.putFor(PrefabValues.java:197)
at nl.jqno.equalsverifier.util.PrefabValues.putFor(PrefabValues.java:173)
at nl.jqno.equalsverifier.util.FieldAccessor.createPrefabValues(FieldAccessor.java:194)
at nl.jqno.equalsverifier.util.FieldAccessor.access$300(FieldAccessor.java:28)
at nl.jqno.equalsverifier.util.FieldAccessor$FieldChanger.modify(FieldAccessor.java:276)
at nl.jqno.equalsverifier.util.FieldAccessor.modify(FieldAccessor.java:163)
at nl.jqno.equalsverifier.util.FieldAccessor.changeField(FieldAccessor.java:153)
at nl.jqno.equalsverifier.util.ObjectAccessor.scramble(ObjectAccessor.java:153)
at nl.jqno.equalsverifier.util.ClassAccessor.getRedAccessor(ClassAccessor.java:261)
at nl.jqno.equalsverifier.util.ClassAccessor.getRedObject(ClassAccessor.java:251)
at nl.jqno.equalsverifier.AbstractDelegationChecker.check(AbstractDelegationChecker.java:49)
at nl.jqno.equalsverifier.EqualsVerifier.verifyWithoutExamples(EqualsVerifier.java:428)
at nl.jqno.equalsverifier.EqualsVerifier.performVerification(EqualsVerifier.java:416)
at nl.jqno.equalsverifier.EqualsVerifier.verify(EqualsVerifier.java:386)
... 27 more


The class in question is fairly simple, I even stripped all of the logic out of it and ran I'm still having the same issue.


Jan Ouwens

未读,
2016年2月24日 03:37:332016/2/24
收件人 equalsv...@googlegroups.com、Chris Stoner
Hi Chris,

Can you show me the class that causes this problem? Also, how do you call EqualsVerifier?
The stacktrace doesn’t give me enough information to reproduce this problem.


Jan
--
You received this message because you are subscribed to the Google Groups "equalsverifier" group.
To unsubscribe from this group and stop receiving emails from it, send an email to equalsverifie...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Chris Stoner

未读,
2016年2月24日 08:22:112016/2/24
收件人 equalsverifier
Class and Interface in question are attached.


Junit Call:

    @Test
    public void equalsVerifier() {
        EqualsVerifier.forClass(UmfDeviceImpl.class).usingGetClass()
                .suppress(Warning.NULL_FIELDS)
                .suppress(Warning.STRICT_INHERITANCE)
                .verify();
UmfDevice.java
UmfDeviceImpl.java

Jan Ouwens

未读,
2016年2月24日 10:46:472016/2/24
收件人 equalsv...@googlegroups.com
Hi Chris,

Thanks for the example code. Unfortunately, it contains a lot of types that I don’t know the definition of, so I can’t actually run it and see what’s going on.

A closer look at the stacktrace showed me this, though:

Caused by: java.lang.NullPointerException
at com.rti.dds.util.Enum.equals(Unknown Source)

In other words, the exception is actually thrown from code that’s not part of EqualsVerifier. I’m not sure what it is. Maybe it’s your code, or maybe it comes from a library that you use. Do you have the source for it?

I’m guessing it may be a superclass for an enum type that you have in your code; maybe UmfTopicEnum.


Jan
--
You received this message because you are subscribed to the Google Groups "equalsverifier" group.
To unsubscribe from this group and stop receiving emails from it, send an email to equalsverifie...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
回复全部
回复作者
转发
0 个新帖子