汕头哪里建网站,什么网站可以做家禽交易,搜索引擎营销分析,wordpress搬家跳回首页junit 测试 dao这篇文章描述了如何为Spring Web Application的Services和DAO实现JUnit测试。 它建立在Spring MVC-Service-DAO-Persistence Architecture Example的基础上 。 从Github的Spring-Web-JPA-Testing目录中可以找到该示例。 提醒 测试装置 –固定状态#xff0c;用… junit 测试 dao 这篇文章描述了如何为Spring Web Application的Services和DAO实现JUnit测试。 它建立在Spring MVC-Service-DAO-Persistence Architecture Example的基础上 。 从Github的Spring-Web-JPA-Testing目录中可以找到该示例。 提醒 测试装置 –固定状态用作运行测试的基准。 单元测试 –这些测试可验证代码组件片段是否按预期执行某些功能。 在Java环境中这些通常在类级别实现。 集成测试 –集成测试是任何类型的测试检查以确保一组交互的组件一起正确执行预期的功能。 组态 我们需要一个JPA Hibernate配置来进行内存中测试 Configuration
EnableTransactionManagement
public class JpaTestConfig {Beanpublic LocalContainerEntityManagerFactoryBean entityManagerFactoryBean(){LocalContainerEntityManagerFactoryBean lcemfb new LocalContainerEntityManagerFactoryBean();lcemfb.setDataSource(this.dataSource());lcemfb.setPackagesToScan(new String[] {com.jverstry});lcemfb.setPersistenceUnitName(MyTestPU);HibernateJpaVendorAdapter va new HibernateJpaVendorAdapter();lcemfb.setJpaVendorAdapter(va);Properties ps new Properties();ps.put(hibernate.dialect, org.hibernate.dialect.HSQLDialect);ps.put(hibernate.hbm2ddl.auto, create);lcemfb.setJpaProperties(ps);lcemfb.afterPropertiesSet();return lcemfb;}Beanpublic DataSource dataSource(){DriverManagerDataSource ds new DriverManagerDataSource();ds.setDriverClassName(org.hsqldb.jdbcDriver);ds.setUrl(jdbc:hsqldb:mem:testdb);ds.setUsername(sa);ds.setPassword();return ds;}Beanpublic PlatformTransactionManager transactionManager(){JpaTransactionManager tm new JpaTransactionManager();tm.setEntityManagerFactory(this.entityManagerFactoryBean().getObject() );return tm;}Beanpublic PersistenceExceptionTranslationPostProcessor exceptionTranslation(){return new PersistenceExceptionTranslationPostProcessor();}} 我们需要从软件包扫描中排除生产配置不进行“ com.jverstry”扫描 Configuration
ComponentScan(basePackages {com.jverstry.Controller,com.jverstry.DAO,com.jverstry.Item,com.jverstry.Service
})public class TestConfig {Beanpublic MyService getMyService() {return new MyServiceImpl();}} 弹簧测试工具 RunWith –这是一个JUnit批注它允许使用与JUnit提供的运行程序不同的运行程序运行测试。 SpringJUnit4ClassRunner –这是用于Spring应用程序的JUnit测试运行器。 通常测试类使用RunWithSpringJUnit4ClassRunner.class进行注释。 ContextConfiguration –此批注可用于指定如何在Spring测试类中加载applicationContext。 可以通过XML文件或Java配置对象进行配置。 服务测试 以下类测试了注入的MyService实现的createAndRetrieve方法 RunWith(SpringJUnit4ClassRunner.class)
ContextConfiguration(classes{ JpaTestConfig.class, TestConfig.class })
public class MyServiceImplTest {Autowiredprivate MyService myService;Testpublic void testCreateAndRetrieve() {MilliTimeItem retr myService.createAndRetrieve();assertNotNull(retr);}} DAO测试 下面的类测试我们的DAO实现。 从上面定义的测试配置类创建的EntityManager注入了我们的实现。 RunWith(SpringJUnit4ClassRunner.class)
ContextConfiguration(classes{ JpaTestConfig.class, TestConfig.class })
public class MyPersistenceDAOTest {Autowiredprivate MyPersistenceDAO myDAO;Testpublic void testCreateMilliTimeItem() {// This operation should not throw an Exceptionlong id myDAO.createMilliTimeItem();}Testpublic void testGetMilliTimeItem() {long id myDAO.createMilliTimeItem();MilliTimeItem retr myDAO.getMilliTimeItem(id);assertNotNull(retr);assertEquals(id,retr.getID());}} 警告 开始为Spring编写JUnit测试时可能会遇到以下错误消息 Java.lang.ClassFormatError:
Absent Code attribute in method that is not native or abstract in class file javax/validation/Validation 上面的原因通常是由以下Maven依赖引起的 dependencygroupIdjavax/groupIdartifactIdjavaee-api/artifactIdversion6.0/versiontypejar/type/dependency 它应该替换为 dependencygroupIdorg.apache.geronimo.specs/groupIdartifactIdgeronimo-jpa_2.0_spec/artifactIdversion1.1/versionscopeprovided/scope/dependency 另一个错误消息是 javax.validation.ValidationException: Unable to find a default provider 通过添加以下Maven依赖关系可以解决此问题 dependencygroupIdorg.hibernate/groupIdartifactIdhibernate-validator/artifactIdversion4.3.0.Final/version/dependency 更多春天相关的帖子在这里 。 参考 技术说明博客上的JCG合作伙伴 Jerome Versrynge的JUnit测试Spring Service和DAO带有内存数据库 。 翻译自: https://www.javacodegeeks.com/2012/10/junit-testing-spring-service-and-dao.htmljunit 测试 dao