- Shiro for security (authentication and authorization)
- Use of CDI interceptors so that you don't have to sprinkle your business logic code with orthogonal concerns
- Integration testing (actually it is unit testing inside an integration container) your application in Arquillian, demonstrating that it is just as easy as plain JUnit tests. "Look ma, no manual wiring!"(tm)
- How Maven project management build tool helps in doing the tasks above easier, no more searching for stuff and configuring classpaths
- Instantiate and configure a CDI implementation; or...
- Do it the old school POJO way --> someObject.setDependency(
toAnother); all over the unit test
- depend on JUnit 4.8.2
- depend on Arquillian 1.0.0.Alpha5 (don't be deceived by the "alpha" qualifier. it's excellently usable already!)
- declare a weld-se-embedded-11 Maven profile that runs tests under Weld SE Embedded 1.1.0.Final CDI container. Note that Arquillian supports a whole host of other container configurations including GlassFish, JBoss, OpenWebBeans, etc.
- Annotate the test class with @RunWith(Arquillian.
- Implement the public static @Deployment method. Declare all the classes (or packages) and files/resources that you need in the to test what you will deploy. It may take some time to get used to but after that you'll realize that it's so powerful. For example you can test how the beans behave with different beans.xml configuration! (putting the "C"ontext back in CDI!)
To know more about Java EE, I highly recommend Java EE 7 Essentials: Enterprise Developer Handbook by Arun Gupta.