首先导入H2内存数据库,Junit4单元测试依赖。
<dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>1.4.185</version> <scope>test</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency
其次使用H2数据源模拟Oracle
@Component @Profile("testOne") // 指定单元测试活动所匹配的数据源 public class DataSourceConfig4Test { @Bean(name="dataSourceUtils") // 要和模拟的数据源名称相对应 DataSource dataSourceUtils() throws SQLException { return new EmbeddedDatabaseBuilder() .setType(EmbeddedDatabaseType.H2) .addScript("classpath:/H2_TYPE.sql") .addScript("classpath:/INIT_TABLE.sql") .addScript("classpath:/H2_FUNCTION.sql") .addScript("classpath:/INIT_DATA.sql") .build(); } }
H2_TYPE.sql (设置H2所模拟的数据库)
SET MODE Oracle;
INIT_TABLE.sql (单元测试需要的数据库表初始化)
CREATE TABLE TEST ( ID NUMBER(38,0) PRIMARY KEY NOT NULL, PARAM1 VARCHAR2(6) NOT NULL, PARAM2 VARCHAR2(6) NOT NULL, PARAM3 VARCHAR2(1) NOT NULL, PARAM4 VARCHAR2(50) NOT NULL );
H2_FUNCTION.sql (不需要特殊方法时,此不可忽略)
CREATE ALIAS TO_DATE FOR "com.mvn.task.one.Function.toDate";
INIT_DATA.sql (初始化测试数据)
INSERT INTO TEST(ID,PARAM1,PARAM2,PARAM3,PARAM4) VALUES(100,'TEST1','TEST2','2','JKL');
至此H2部分准备完毕,下面来写个Junit4的单元测试类例子
@ActiveProfiles("testOne") // 需要和H2模拟的数据源对应上 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:testspring/applicationContext-test-one.xml") public class oneTest { @Autowired private ITestService iTestService; @Test public void testBengin(){ Test model = iSubcService.findTest("TEST1", "TEST2"); Assert.assertNotNull(model); } }
到此H2和Junit单元测试完成,另外一个数据源单元测试重复以上步骤即可,如有疑问请留言,欢迎拍砖,如有不同意见或更好的解决方案,也请留言~
相关推荐
- 针对Repository层:如果涉及数据库操作,可以使用H2内存数据库进行测试,确保数据访问的正确性。 5. 测试工具和库 - Mockito:用于创建和管理mock对象,隔离依赖,只测试目标对象。 - Hamcrest:提供丰富的...
Spring Boot的`spring-boot-starter-test`模块包含了JUnit和Mockito等测试工具,而`h2database`依赖则允许我们在测试中使用H2内存数据库。 接下来,我们关注Spring单元测试的实施。在Spring中,我们可以使用`@Run...
同时,我们可能需要配置一个内存数据库,比如 `H2`,以替代真实的数据库,减少测试的复杂性和时间消耗。 测试 `DAO` 类的方法时,我们应该针对每个方法编写测试用例,覆盖正常情况、异常情况以及边界条件。例如,...
提供内存数据库的规则(同时支持和 )。 它与所有已知的JDBC访问库兼容,例如 , , , 或普通的JDBC。 为什么? 因为您要测试由代码执行SQL代码而不与实际的DB服务器集成 无需运行数据库服务器并使其可用 您正在...
- 在测试环境中,考虑使用内存数据库如H2,以减少测试依赖。 在实际项目中,将这些概念整合起来,可以创建一个可靠的JDBC MySQL连接测试框架,确保数据库操作的正确性和稳定性。通过持续集成和自动化测试,能够...
我们可以使用内存数据库(如H2)或者嵌入式数据库(如HSQLDB)来避免在测试中实际访问生产数据库。同时,使用JPA或Hibernate等持久层框架的测试工具,如Hibernate Test或者Spring Data JPA的@...
对于数据库操作,由于我们不希望真实修改数据库,所以通常会使用HSQLDB或H2这样的内存数据库进行测试。这些数据库可以在测试过程中快速创建和销毁,不会对实际数据造成影响。 在测试方法上,我们可以使用JUnit的`@...
1. **配置测试环境**:设置Spring的ApplicationContext,加载测试所需的配置,如模拟数据库连接或使用内存数据库(如H2)。 2. **测试Struts2动作类**:创建Action的实例,模拟ActionContext,调用execute方法,并...
5. **单元测试**:在单元测试中,我们通常使用如JUnit这样的测试框架,配合Mockito模拟数据库操作,或者使用如H2内存数据库进行真实数据交互的测试。对于MyBatis,我们可以测试Mapper接口的方法,确保它们能够正确...
如果`findById`涉及到数据库查询,那么需要使用像Hibernate或MyBatis这样的ORM框架提供的测试支持,或者使用像H2这样的内存数据库来运行数据库相关的单元测试。 在编写单元测试时,还需要考虑以下几点: 1. **隔离...
1. 配置测试环境:创建一个专门为测试用的配置文件,如`test-context.xml`,在这个配置文件中,我们可以使用内存数据库(如H2)替代真实的数据库,以便快速执行测试且不会影响生产数据。 2. 使用@Test注解:在JUnit...
此外,可以利用H2或HSQLDB这样的内存数据库来快速创建临时测试数据库。 在结合Spring和Hibernate进行测试时,有几种常见的测试策略: 1. **单元测试**:专注于单一的函数或方法,通常不涉及数据库交互。你可以使用...
- 配置数据源,可以通过内存数据库如 H2 或者使用 Mock 数据来模拟真实环境。 - 使用 `@Before` 和 `@After` 注解初始化和清理测试数据。 - 编写测试方法,调用 Service 或 Dao 层的方法,并使用断言验证结果。 ...
10. **单元测试**:可能使用JUnit进行单元测试,确保代码的正确性。 这个压缩包中的源码是一个很好的学习资源,你可以通过阅读和分析代码来提升你的Java数据库编程和MyEclipse使用技能。同时,对于H2数据库的使用也...
- **测试**:`H2ModelTest`可能是该项目的测试类,它使用JUnit或其他测试框架来验证数据库操作是否正确。测试类可能包括连接H2数据库,执行SQL(如插入、查询、更新、删除),并断言结果。 4. **MyEclipse集成**:...
在Hibernate的测试中,通常我们会使用H2内存数据库,这样可以快速创建和销毁数据库,提高测试效率。 总的来说,"SpringMVC+hibernate整合+测试类"的项目涵盖了Web开发中的多个重要环节:前后端交互、数据库操作以及...
H2是一款轻量级、高性能的关系型数据库,常用于单元测试和集成测试场景,因为它可以内存运行,启动快速,并且支持多种数据库模式。 在Spring项目中,测试是保证代码质量和系统稳定性的重要环节。使用H2数据库进行...
与HSQLDB类似,可以通过JDBC连接创建H2内存数据库,并在测试前后进行初始化和清理: ```java import org.h2.jdbcx.JdbcDataSource; public class Test { private JdbcDataSource dataSource; @Before public ...
H2内存数据库(可以与任何其他关系数据库一起使用) 入门 将Maven项目直接导入到Java IDE: Intellij IDEA 弹簧工具套件(STS) 蚀 (可选)要与其他RDBMS一起使用,您需要配置与数据库URL,用户名,密码匹配的...
综合上述内容,`cdi-deltaspike-demo`是一个基于Java的项目,展示了如何结合CDI 2.0(通过Weld 3实现)、DeltaSpike Data模块、JUnit 5测试框架以及嵌入式H2数据库来构建和测试应用。这个项目可能是为了教育开发者...