Info |
---|
Help is available by sending an email to csf-support@mit.edu |
Panel | |||||
---|---|---|---|---|---|
|
Panel |
---|
DefinitionIn our applications and framework, we have used the term "integration test" to describe a written JUnit test case that requires a full Spring context (including all the framework classes), and actually talks to the MITSIS Oracle database. An integration test is disctinct from a pure unit test, which typically uses mock objects for dependencies, and does not talk to the database. We mainly use integration tests for testing DAO classes, but they could possibly be used also for testing service classes and MVC controllers. |
...
Panel |
---|
The CSF AbstractIntegrationTestBase.java unit test base classCSF now has a new abstract class, AbstractIntegrationTestBase class, found in the csf-test module. This class uses JUnit and Spring annotations to gain access to functionality previously provided by extending the deprecated Spring class AbstractTransactionalDataSourceSpringContextTests. This CSF abstract class is to be used with all integration tests. It replaces the following deprecated classes
that were used in csf-common-legacy. |
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
The locations element of the @ContextConfiguration only specifies one xml file. This xml file is used to set the default test application context for ALL unit tests which extends AbstractIntegrationTestBase.java class. At the bottom of this page is more information on how to configure and how to override the default test application context.
|
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
|
Panel | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| configure default context |
Code Block |
---|
context} h3. How to configuration the default test application context The annotation {code} @ContextConfiguration(locations = {"classpath:applicationContext-csf-unit-tests-default.xml"}) {code} is used to set the default test application context for all the junit tests which extend the AbstractIntegrationTestBase .java class. |
If the project was created using the es-project-template (for either the jar or war) then the applicationContext-csf-unit-tests-default.xml file can be found it the project's src/test/resources directory. |
If the project was *NOT* created using the es-project-template, then the applicationContext-csf-unit-tests-default.xml must be created in the project's src/test/resources directory. |
To download the a starter version of the applicationContext-csf-unit-tests-default.xml file, [right click on this |
link | Using the unit test base class^applicationContext-csf-unit-tests-default.xml] and select *Save target as...*. {color:red}Be sure to save the file in the project's src/test/resources directory. |
{color} The following is a listing of the starter version of the applicationContext-csf-unit-tests-default.xml file: |
* *For your CSF JAR projects |
*: Replace <projectName> with your project name. {code} <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <import resource="classpath*:applicationContext-csf-common.xml" /> <import resource="classpath*:applicationContext-csf-webservices.xml" /> <import resource="classpath*:applicationContext-csf-security-spring.xml" /> <import resource="classpath*:applicationContext-csf-orm.xml" /> <import resource="classpath*:applicationContext-csf-base.xml" /> <!--import resource="classpath*:applicationContext-csf-email.xml" /--> <!--import resource="classpath*:applicationContext-csf-rules.xml" /--> <!--import resource="classpath*:applicationContext-csf-workflow.xml" /--> <import resource="classpath*:applicationContext-csf-<projectName>.xml" /> <import resource="classpath*:applicationContext-csf-<projectName>-config-test.xml" /> </beans> |
{code} \\ * *For your CSF WAR project*: Replace <projectName> with your project name. {code} <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <import resource="classpath*:applicationContext-csf-common.xml" /> <import resource="classpath*:applicationContext-csf-webservices.xml" /> <import resource="classpath*:applicationContext-csf-security-spring.xml" /> <import resource="classpath*:applicationContext-csf-orm.xml" /> <import resource="classpath*:applicationContext-csf-base.xml" /> <!--import resource="classpath*:applicationContext-csf-email.xml" /--> <!--import resource="classpath*:applicationContext-csf-rules.xml" /--> <!--import resource="classpath*:applicationContext-csf-workflow.xml" /--> <import resource="classpath*:applicationContext-csf-<projectName>.xml" /> <import resource="classpath*:applicationContext-<projectName>.xml" /> <import resource="classpath*:applicationContext-<projectName>-config-test.xml" /> </ |
beans> {code} \\ This starter xml file must now be customized with your project's application context xml files. |
The following is an example from the Student Sponsored Billing application and is an example on how to customize the applicationContext-csf-unit-tests-default.xml file. |
{code |
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<import resource="classpath*:applicationContext-csf-common.xml" />
<import resource="classpath*:applicationContext-csf-webservices.xml" />
<import resource="classpath*:applicationContext-csf-security-spring.xml" />
<import resource="classpath*:applicationContext-csf-orm.xml" />
<import resource="classpath*:applicationContext-csf-base.xml" />
<!--import resource="classpath*:applicationContext-csf-email.xml" /-->
<!--import resource="classpath*:applicationContext-csf-rules.xml" /-->
<!--import resource="classpath*:applicationContext-csf-workflow.xml" /-->
<import resource="classpath*:applicationContext-csf-studentaccount.xml" />
<import resource="classpath*:applicationContext-csf-ssb.xml" />
<import resource="classpath*:applicationContext-ssb.xml" />
<import resource="classpath*:applicationContext-ssb-config-test.xml" />
</beans>
|
The order in which the xml files appear is important. Just remember the beans are instantiated in the order that they are processed and, if needed, overriding previous bean instantiations with identical ids.
{code}
{color:red}The order in which the xml files appear is important. Just remember the beans are instantiated in the order that they are processed and, if needed, overriding previous bean instantiations with identical ids.{color}
|
Panel | |||||||
---|---|---|---|---|---|---|---|
| |||||||
Panel | |||||||
Anchor | | override default context | override default context |
Code Block |
---|
import org.springframework.test.context.ContextConfiguration; import edu.mit.csf.test.AbstractIntegrationTestBase; @ContextConfiguration(locations = {"classpath:applicationContext-special-authorization-test.xml"}) public class TestHibernateAcademicTermDao extends AbstractIntegrationTestBase { } {code} This applicationContext-special-authorization-test.xml must also exist in the project's src/test/resources directory. |
Code Block |
---|
This xml file will contain a list of imports of application context xml files. For example, the contents of this xml file might look like: {code} <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <import resource="classpath*:applicationContext-special-setup.xml" /> <import resource="classpath*:applicationContext-csf-base.xml" /> <import resource="classpath*:applicationContext-csf-webservices.xml" /> <import resource="classpath*:applicationContext-csf-security-spring.xml" /> <import resource="classpath*:applicationContext-csf-common.xml" /> <import resource="classpath*:applicationContext-csf-orm.xml" /> <import resource="classpath*:applicationContext-special-authorizations.xml" /> <import resource="classpath*:applicationContext-general-config-test.xml" /> </beans> {code} |