openpojo icon indicating copy to clipboard operation
openpojo copied to clipboard

Validator with ToStringTester failed

Open saidRaiss opened this issue 1 year ago • 1 comments

I wish to test an override toString method :

    @Test
    void test() {
        PojoClass pojoClass = PojoClassFactory.getPojoClass(Person.class);
        Validator validator = ValidatorBuilder.create().with(new ToStringTester()).build();
        validator.validate(pojoClass);
    }

    public static class Person {
        private String name;
        public Person(String name) {
            this.name = name;
        }
        @Override
        public String toString() {
            return "Person[name: "  + name + "]";
        }
    }

I got an assertion error:

Expected string mismatch expected <zxF> but was <Person[name: OxoL]>
java.lang.AssertionError: Expected string mismatch expected <zxF> but was <Person[name: OxoL]>
	at com.openpojo.validation.affirm.JavaAssertionAffirmation.fail(JavaAssertionAffirmation.java:33)
	at com.openpojo.validation.affirm.JavaAssertionAffirmation.affirmEquals(JavaAssertionAffirmation.java:72)
	at com.openpojo.validation.affirm.Affirm.affirmEquals(Affirm.java:75)
	at com.openpojo.validation.test.impl.ToStringTester.run(ToStringTester.java:41)
	at com.openpojo.validation.utils.ValidationHelper.runValidation(ValidationHelper.java:102)
	at com.openpojo.validation.impl.DefaultValidator.validate(DefaultValidator.java:46)

I thing this is a generic error. On ToStringTester class the test compares instance to string with a random text which will be every time false.

public class ToStringTester implements Tester {

  public void run(PojoClass pojoClass) {
    Object instance = RandomFactory.getRandomValue(pojoClass.getClazz());

    IdentityHandlerStub identityHandlerStub = new IdentityHandlerStub(instance);
    identityHandlerStub.setToStringReturn(RandomFactory.getRandomValue(String.class));

    IdentityFactory.registerIdentityHandler(identityHandlerStub);

    Affirm.affirmEquals("Expected string mismatch", identityHandlerStub.getToStringReturn(), instance.toString());
  }
}

saidRaiss avatar Jan 31 '23 10:01 saidRaiss