Path: csiph.com!optima2.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!1.eu.feeder.erje.net!newsfeed.fsmpi.rwth-aachen.de!newsfeed.straub-nv.de!eternal-september.org!feeder.eternal-september.org!mx02.eternal-september.org!.POSTED!not-for-mail From: Jeff Higgins Newsgroups: comp.lang.java.programmer Subject: Re: How to test my @NotEmpty with JUnit Date: Fri, 17 Jul 2015 07:27:54 -0400 Organization: A noiseless patient Spider Lines: 65 Message-ID: References: <87io9jyycu.fsf@Equus.decebal.nl> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Fri, 17 Jul 2015 11:30:18 +0000 (UTC) Injection-Info: mx02.eternal-september.org; posting-host="8e164d158183579609bf09837dee5210"; logging-data="27221"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19Xersc7rVSEyXuGVu20+4ecqBGVqjWuPM=" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Icedove/31.7.0 In-Reply-To: <87io9jyycu.fsf@Equus.decebal.nl> Cancel-Lock: sha1:WNcJS3bcoDj3OA0AZVeKcU2UCgo= Xref: csiph.com comp.lang.java.programmer:32058 On 07/17/2015 04:36 AM, Cecil Westerhof wrote: > We have to remove almost every framework used in the code. I started > with the @NotEmpty from Hibernate. It was the only class used from > Hibernate, so low hanging fruit we thought. > > I wrote the following implementation: > > import java.lang.annotation.Documented; > import static java.lang.annotation.ElementType.FIELD; > import java.lang.annotation.Retention; > import static java.lang.annotation.RetentionPolicy.RUNTIME; > import java.lang.annotation.Target; > > import javax.validation.Constraint; > import javax.validation.constraints.NotNull; > import javax.validation.constraints.Size; > import javax.validation.ReportAsSingleViolation; > > @Documented > @Constraint(validatedBy = {}) > @Target({ FIELD }) > @Retention(RUNTIME) > @ReportAsSingleViolation > @NotNull > @Size(min = 1) > public @interface NotEmpty { > public abstract String message() default "Field has to be filled"; > } > > > But it should be tested also of-course. So I wrote the following test: > > import org.junit.Test; > > class NotEmptyClass { > @NotEmpty > String notEmpty; > > NotEmptyClass(String value) { > notEmpty = value; > } > } > > public class NotEmptyTest { > @Test > public void firstTest() { > new NotEmptyClass(null); > } > } > > I would expect this test not to pass, but it does. So clearly I am > doing something wrong, but I have no idea what. (This is the first > time I really work with annotations.) I did some Googling but until > now to no avail. So if someone could point me to the right direction … > As I stated before I'm not a JPA or JavaEE user so this might be CompleteBS. I also did some googling "test custom bean validation" and from what I read I wonder why you don't show a ConstraintValidator class. And also the JUnit tests I ran across seem to do a good bit of setup that you don't show. One link that I picked almost at random. Also the spec seems easy to read. Overwhelming? Well, yep, but...