hi, parameter-validation just works if it's integrated (like with jax-rs). such an integration is done e.g. via an interceptor. -> if you can't use an out-of-the-box integration (provided by the validation-provider you are using), you have to do it on your own (it isn't the task of the test-control-module to support it). e.g. via a cdi-extension you can add an interceptor(-binding-annotation) to your beans dynamically (and you can even limit that to project-stage development). with that you would introduce a significant difference in your test-code. -> instead of that i would ask the hibernate-validator-team, if they support parameter-validation in a java-se + cdi based application. (in that case it would also work with the test-control-module without changes.)
regards, gerhard 2016-02-04 10:30 GMT+01:00 alebu <[email protected]>: > Hi all, > I want to configure unit tests so I could use bean-validation but for some > reason my validation constraints are ignored. The idea behind is to > simulate JEE application server (AS) as max as possible and test business > logic this way. I defined a very simple case which consist of service class > which has a method with some constraints on parameters. And I expect to get > a ConstraintViolationException if I call this method with "wrong" > parameters. However method is executed without any exceptions and it looks > like no validation happens. > Here is my setup in maven but briefly: > 1) I added hivernate validator because I was getting > javax.validation.ValidationException with message below otherwise: > Unable to create a Configuration, because no Bean Validation provider could > be found. Add a provider like Hibernate Validator (RI) to your classpath. > > 2) Based on docs > https://deltaspike.apache.org/documentation/configure.html > I added: > deltaspike-core-api and deltaspike-core-impl artifacts. > > 3) Based on docs > https://deltaspike.apache.org/documentation/bean-validation.html I added: > deltaspike-bean-validation-module-impl > > 4) Based on https://deltaspike.apache.org/documentation/test-control.html > I > added > deltaspike-test-control-module-api > deltaspike-test-control-module-impl > and weld realted artifacts: > deltaspike-cdictrl-weld > weld-se-core > > DETAILS: > > <properties> > ... > <deltaspike.version>1.5.2</deltaspike.version> > <weld.version>2.3.2.Final</weld.version> > </properties> > ... > <dependency> > <groupId>org.hibernate</groupId> > <artifactId>hibernate-validator</artifactId> > <version>5.2.3.Final</version> > <scope>test</scope> > </dependency> > > <dependency> > <groupId>org.apache.deltaspike.core</groupId> > <artifactId>deltaspike-core-api</artifactId> > <version>${deltaspike.version}</version> > <scope>test</scope> > </dependency> > > <dependency> > <groupId>org.apache.deltaspike.core</groupId> > <artifactId>deltaspike-core-impl</artifactId> > <version>${deltaspike.version}</version> > <scope>test</scope> > </dependency> > > <dependency> > <groupId>org.apache.deltaspike.modules</groupId> > <artifactId>deltaspike-bean-validation-module-impl</artifactId> > <version>${deltaspike.version}</version> > <scope>test</scope> > </dependency> > > <dependency> > <groupId>org.apache.deltaspike.modules</groupId> > <artifactId>deltaspike-test-control-module-api</artifactId> > <version>${deltaspike.version}</version> > <scope>test</scope> > </dependency> > > <dependency> > <groupId>org.apache.deltaspike.modules</groupId> > <artifactId>deltaspike-test-control-module-impl</artifactId> > <version>${deltaspike.version}</version> > <scope>test</scope> > </dependency> > > <dependency> > <groupId>org.apache.deltaspike.cdictrl</groupId> > <artifactId>deltaspike-cdictrl-weld</artifactId> > <version>${deltaspike.version}</version> > <scope>test</scope> > </dependency> > > <dependency> > <groupId>org.jboss.weld.se</groupId> > <artifactId>weld-se-core</artifactId> > <version>${weld.version}</version> > <scope>test</scope> > </dependency> > > ----- > > JUNIT looks like: > @RunWith(CdiTestRunner.class) > public class TestDeltaspike { > > @Inject > DummyService dummyService; > > @Test > public void testValidAnnotationScenario(){ > assertNotNull(dummyService); > > > //Validation.byDefaultProvider().configure().constraintValidatorFactory(new > CDIAwareConstraintValidatorFactory()).buildValidatorFactory(); > > dummyService.validateValue(7); > fail("Expected validation exception"); > } > } > > where DummyService looks like: > public class DummyService { > > public void validateValue( @Min(10) int value ){ > System.out.println( "XXX: value "+value+" was validated at this > point and must be at least 10" ); > } > } > > ----- > I also have beans.xml in src/test/resources/META-INF/beans.xml like: > <beans xmlns="http://xmlns.jcp.org/xml/ns/javaee" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee > http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd" > version="1.2" bean-discovery-mode="all"> > </beans> > > and validation.xml in src/test/resources/META-INF/validation.xml > but from logs it looks like it does nothing. I am making this assumption > because when I uncommenting the line in my test > //Validation.byDefaultProvider().configure() ... > then I see something in logs related to validator configuration, otherwise > no validation is mentioned in logs. > But non of the both helps anyway. > Test fails on: > fail("Expected validation exception"); >
