Kotlin class instance assert not correct -
i'm converting java project kotlin. i've converted user object kotlin , when run existing junit tests in java i'm getting error between 2 instances of kotlin user object.
user.kt:
data class user ( @id @generatedvalue(strategy = generationtype.sequence, generator = "sequencegenerator") @sequencegenerator(name = "sequencegenerator") var id: long? = null, ... ) testutil.java
import static org.assertj.core.api.assertions.assertthat; public class testutil { public static void equalsverifier(class clazz) throws exception { object domainobject1 = clazz.getconstructor().newinstance(); // test instance of same class object domainobject2 = clazz.getconstructor().newinstance(); assertthat(domainobject1).isnotequalto(domainobject2); } } the assertthat(domainobject1).isnotequalto(domainobject2) test fails, believe in java comparison not done correctly on kotlin class. if run through debugger, can see domainobject1 , domainobject2 different instances.
is possible test case pass? same test case used other java classes, has work both java , kotlin classes.
the isnotequalto calls equals. kotlin class implements correct equals method data class. domainobject1.equals(domainobject2) true. behavior correct.
just @ assertj document:
isnotsameas(object other): verifies actual value not same given one, ie using == comparison. i think should try:
assertthat(domainobject1).isnotsameas(domainobject2);
Comments
Post a Comment