-
看完了<测试驱动开发>纠结中.....关于遇到了domain对象实现依赖数据库如何处理10
粗粗的看完了测试驱动开发,首先mark一下.由于不会python,因此第二步分直接跳过
书中的例子都比较理想化,似乎TDD主要Driven出来的都是Domain内存对象,对于数据库以及网络依赖的部分很少由涉及.
目前code的时候突然发现自己的一段domain业务逻辑代码需要依赖数据库
我的处境:code example
........
private MailReceiver strategy
public void sendEmail(){
Employee emp = strategy.getReceiver();
}
.....
其中 MailReceiver 是一个接口,是一个strategy模式,不同实现类有不同的方法实现,返回一个Employee对象.
因此对于这个类的测试应该放到DomainTest中,但是问题是这个策略模式的几个实现类是通过执行sql语句获取返回值.
于是纠结了,我是应该在测试中建mock来进行隔离吗?(这个项目不是hibernate的),或者说对于这个测试我应该放到integration测试中?
BTW,感觉TDD不是很容易掌握的,现实中总是由许多问题
我发现最近TDD版块的top2都是我的帖子阿,看来这个版块运动不是很活跃哈
问题补充
难道没有人有类似的经历吗?
虽然已经将unit test已经被抛弃不止一次,但这次决定将TDD走下去。2010年11月16日 10:30
4个答案 按时间排序 按投票排序
-
xixix2004 写道我想问你连个数据库测什么?比如你用ORACLE+HIBERNATE?
你去测什么?
测ORACLE是不是真能存数据,还是测HIBERNATE得OR-MAPPING是否有BUG?
你测的是你的业务逻辑啊。跟连不连,连什么数据库有什么关系。
伪造数据吧。跟数据库真的没什么关系。
你懂的。
任何东西都要测,大部分写的大部分应用就是数据库存储,凭什么不测最重要的数据库部分?
我上面的写法,只是说让你的测试可以更好的独立出来,而不是说我们不需要测数据库。
2010年11月16日 10:30
-
我想问你连个数据库测什么?比如你用ORACLE+HIBERNATE?
你去测什么?
测ORACLE是不是真能存数据,还是测HIBERNATE得OR-MAPPING是否有BUG?
你测的是你的业务逻辑啊。跟连不连,连什么数据库有什么关系。
伪造数据吧。跟数据库真的没什么关系。
你懂的。2010年11月16日 10:30
-
public void sendEmail(){
Employee emp = strategy.getReceiver();
}
改成
public void sendEmail(Employee emp){
}
这样就可以单独测mail功能了。2010年11月16日 10:30
-
这年头有几个程序不需要依赖数据库的?这不是什么新鲜事.
既然你的对象依赖数据库,就搞个TDD专用数据库,往里面插入MOCK数据(有个东西叫DBUNIT),带上数据库一起TDD.
这板块贴子不活跃,是因为几年前就把这些题目都讨论过了.
有时间还是把以前的精华贴,良好贴都看一遍.2010年11月16日 10:30
相关推荐
<param-name>jcifs.smb.client.domain</param-name> <param-value>域名</param-value> </init-param> <init-param> <param-name>jcifs.netbios.wins</param-name> <param-value>域服务器的IP</param...
<br><br>public class UserDaoImpl implements UserDao {<br><br> public User queryForSignOn(String username) {<br> User user = queryUser(username);<br> if(user.getLocked())<br> throw new LockException...
在JBoss 7的配置文件`standalone.xml`或`domain.xml`中,找到`subsystem`标签下的`datasources`节点,然后添加一个新的数据源。例如: ```xml <datasources> ... <datasource jndi-name="java:jboss/datasources/...
然而,需要注意的是,虽然`crossdomain.xml`对Flash和某些老版本的浏览器有效,但现代浏览器(尤其是那些不支持Flash的)通常依赖于CORS(Cross-Origin Resource Sharing)头部来处理跨域请求。因此,在ArcGIS ...
Software Testing and Continuous Quality Improvement<br><br>SECTION I SOFTWARE QUALITY IN PERSPECTIVE . . . . . . . . . . . . . . . 1<br>1 Quality Assurance Framework. . . . . . . . . . . . . . . . . ....
<name>dfs.domain.socket.path</name> <value>/var/run/hadoop-hdfs/dn._PORT</value> </property> <property> <name>dfs.client.file-block-storage-locations.timeout</name> <value>3000</value> </property>...
此外,可能还需要在`standalone.xml`或`domain.xml`(取决于JBoss运行模式)中添加MySQL驱动的配置: ```xml <drivers> ... <driver name="mysql" module="com.mysql"> <driver-class>com.mysql.jdbc.Driver</...
- **既是聚合也是父工程**:通常情况下,聚合项目也会充当父工程的角色,这意味着它可以通过 `<dependencyManagement>` 和 `<properties>` 来集中管理子模块的依赖版本以及公共配置。 ##### 2. 创建子模块 - **...
Spring Data JPA 是 Spring 框架的一个模块,它简化了数据库访问层(DAO)的开发,通过提供自动化的 Repository 实现,使得开发者无需编写大量的 CRUD(创建、读取、更新、删除)代码。Spring Data JPA 基于 Java ...
如果需要使用Spring JDBC或者Task,可以在pom.xml中添加相应的依赖,并在代码中进行相应的配置和实现。 在实际开发中,你可能还需要配置视图解析器、拦截器、过滤器等,以满足项目需求。Spring MVC允许你高度定制化...
综上所述,“maven多模块开发”是大型Java项目中常用的一种组织策略,它结合了Maven的强大依赖管理和Spring Data JPA的便捷数据库操作,为开发者提供了高效、有序的开发环境。通过合理规划和配置,可以极大地提高...
在SpringBoot项目中,整合Mybatis-Plus并实现多数据源的动态切换,同时支持分页查询是一项常见的需求。以下将详细阐述这个过程中的关键步骤和技术要点。 首先,我们需要引入必要的Maven依赖。这里提到了四个关键...
The 80x86 MOV Instruction<br>4.8 - Some Final Comments on the MOV Instructions<br><br>4.9 Laboratory Exercises<br>4.9.1 The UCR Standard Library for 80x86 Assembly Language Programmers<br>4.9.2 ...
总之,Spring与OpenJPA的结合为Java开发者提供了一个强大且灵活的持久层解决方案,使得我们能够在面向对象的环境中轻松地处理数据库操作,提高开发效率。在项目实践中,不断学习和优化,才能更好地发挥它们的优势。
<convert converter="bean" match="com.dwr.domain.User"/> </allow> </dwr> ``` 这里的`creator="spring"`表明我们将使用Spring来实例化这个对象,而`javascript="UserServiceImpl"`定义了在客户端可以使用的...
通过以上步骤,Web项目就可以有效地整合Spring框架,实现控制反转(IoC)和面向切面编程(AOP),简化了组件之间的依赖关系,提高了代码的可测试性和可维护性。同时,通过监听器`ContextLoaderListener`,可以在Web...
3. `<init-param>`中的`<param-name>debug</param-name>`和`<param-value>true</param-value>`用于开启调试模式。 4. 另一个`<init-param>`中的`<param-name>classes</param-name>`用于指定要暴露给客户端的Java类,...
Hibernate开发jar包 5.07 配置文件内容 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" ...
需要注意的是,如果修改了这些设置而测试仍然失败,可能是浏览器缓存问题,此时可以通过F12打开开发者工具,在“Application”标签页下的“Storage”->“Cookies”中手动修改Cookie的域。 总结而言,通过Spring-...
<module>springboot-domain</module> <module>springboot-sdk</module> </modules> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <build.jdk.version>1.8</build.jdk....