recently during CDI TCK arquillian migration (
1.1 branch) we had to replace test harness @ExpectedDeploymentException in tests expecting deployment failure.

So currently in TCK we use @ShouldThrowException(Exception.class) on arquillian deployment method. Indeed testing generic Exception is not the best solution but in fact right now we cannot test
exact deployment cause while there are no standardized CDI deployment-related exceptions (in CDI 1.1 there will be - see CDI-118 Standardize deployment-related exception classes). Also note that "Adding this annotation will force @{@link Deployment} to be testable = false which will force @{@link RunAsClient}".

The other possibility is to use something like Assert.fail("Deployment should have failed...") or assert false in test method. Seam Compatibility and Weld use this approach.

The question is whether to standardize thisá among all cdi/weld/seam tests. I think we should use the arquillian way (
@ShouldThrowException) while its more obvious that we expect deployment failure and use relevant expected exceptions as soon as CDI 1.1 arrives.


Martin Kouba
JBoss Quality Assurance Engineer 
E-mail: mkouba@redhat.com
Web: www.cz.redhat.com
Red Hat Czech s.r.o., Purky˛ova 99/71, 612 45, Brno, Czech Republic