本月的课题是在研发团队中推广Enterprise Java的单元测试,说是单元测试,其实很大程度上是单元测试和验收测试的一个综合产物。在2003年的大连,elian同学就高瞻远瞩的提出我们做的既不是白盒测试,也不是黑盒测试,而是灰盒测试。神人啊。在实践Fit,Selenium,dbunit以及很多xUnit扩展,各有优缺点。
看过若干本xUnit方面的书籍,也在项目中实践过,那时我还是个一门心思做研发的坏脾气小子,挺不配合测试人员的工作(但现在许多开发人员对测试人员的态度,我实在是不想提了,要是按照我当年的脾气,非重打100杀威棒并拖出去喂狗不可),后来我迷上了需求管理,再后来我发现真正的让需求不虚的研发方式是:测试驱动开发(Test Driven Development)。
有这种豁然开朗的心得,不是在C++的开发环境下,也不是“集尔意意(J2EE,某客户读音)”的开发团队中,而是在使用Rails时。Rails有千般好,我在这里不想细说。有一点是,当你用过了Ruby on Rails后,你基本上不想再碰java的哪怕一行代码,特别是在用rails做完了单元测试和功能性测试之后。Rails对单元测试和功能性测试的支持,那叫一个绝啊。
可是大部分的开发人员不像我这样,可以轻松切换到J2EE之外的平台,所以还是要做JavaEE下的单元测试推广,如果谁想跟我说,用junit啊,我相信他基本上就没有真正的写单元测试。由于过渡的采用了若干的模式、分层。。。要在J2EE开发团队中推单元测试还真不是件易事,更不用说是在那些个“累死了都不应该可怜的”觉着“单元测试是测试人员应该做的事”的开发人员的团队中推广了。
其实路子是已经成熟了的,主要的问题是谁也不愿意费力,潜台词是:我宁愿重启若干次服务器来调试,我宁愿reopen若干次bug,也不愿意接触“新”玩意.这玩意新吗?这玩意真得浪费了你宝贵的时间吗?做程序员做到这个份上,真是悲哀。
其实也难怪,看一下一段java代码:
import java.util.List;
import java.util.ArrayList;
class Erase {
private List filterLongerThan(List strings, int length) {
List result = new ArrayList();
for (int i = 0; i < strings.size(); i++) {
String s = (String) strings.get(i);
if (s.length() <= length) {
result.add(s);
}
}
return result;
}
public static void main(String[] args) {
List names = new ArrayList();
names.add("Ted"); names.add("Fred");
names.add("Jed"); names.add("Ned");
System.out.println(names);
Erase e = new Erase();
List shortNames = e.filterLongerThan(names, 3);
System.out.println(shortNames.size());
for (int i = 0; i < shortNames.size(); i++) {
String s = (String) shortNames.get(i);
System.out.println(s);
}
}
}
要达到同样的效果,用同样运行在java 虚拟机中的groovy脚本再写:
names = ["Ted", "Fred", "Jed", "Ned"]
println names
shortNames = names.findAll{ it.size() <= 3 }
println shortNames.size()
shortNames.each{ println it }
别跟我提性能哈,就像当年我用c++写程序时,java开发人员跟我说的那样:现在内存这么便宜,多买点不就行了。
扯远了,J2EE下的单元测试,如果能够跟groovy结合着就好了。
分享到:
相关推荐
总的来说,JavaEE提供了一个强大的框架来构建复杂的企业级应用,包括网上测试系统。通过上述技术,开发者可以构建出稳定、安全、可扩展的系统,满足各种业务需求。在实际项目中,还需要考虑性能优化、异常处理、安全...
这里的"javaEE各种数据库驱动jar包"是指Java的JDBC(Java Database Connectivity)驱动程序,它们是实现Java应用程序与不同数据库系统通信的接口。JDBC驱动程序有多种类型,通常分为四类:Type 1、Type 2、Type 3和...
JAVAEE框架测试题.pdf
Java面试经验 Java面试经验是指在Java开发领域中,面试官对候选人进行技术考核的一系列问题和答案的集合。这些问题涵盖了Java基础知识、Java Web、JavaScript、SQL等方面,并对候选人的技术能力和潜力进行评估。...
广州传智播客JavaEE工程师测试题
JavaEE,全称为Java Platform, Enterprise Edition,是Java平台下的企业版,主要用于构建分布式、多层的企业级应用程序。这个标题“软工JavaEE期末测试含源码”表明这是一个关于JavaEE的课程或项目,其中包含了源...
JavaEE,全称为Java Platform, Enterprise Edition,是Java平台下的企业版,主要用于构建分布式、多层的企业级应用程序。这个平台包含一系列技术规范和API,旨在提高开发效率、可移植性和可伸缩性,以满足大型企业的...
从压缩包文件的名称"gaoshan.3gp"来看,这可能是一个关于高珊老师的教学视频,其中可能会涵盖上述JavaEE和测试相关的概念,通过观看这样的视频,学习者可以直观地了解这些技术的实践应用和最佳实践。
EJB3.x版本简化了API,测试可能涵盖实体Bean、会话Bean、消息驱动Bean的概念和用法。 5. **Spring框架**:Spring是JavaEE开发中的核心框架,提供依赖注入、AOP(面向切面编程)、MVC(Model-View-Controller)模式...
基于JavaEE的组合测试系统的设计与实现是软件测试中的一种重要技术,该系统可以生成规模小且覆盖率高的测试用例,提高测试的效率和质量。该系统使用JavaEE技术,结合组合测试算法,设计出一个易于使用的组合测试平台...
4. **EJB(Enterprise JavaBeans)**:EJB是JavaEE的高级组件模型,提供了一种规范来创建可部署的、分布式的、组件化的服务器端应用程序,如会话bean、实体bean和消息驱动bean。 5. **MVC(Model-View-Controller)...
- EJB是JavaEE中的服务器端组件模型,包括会话bean、实体bean和消息驱动bean,用于业务逻辑的封装和分布式服务的实现。 6. **JPA(Java Persistence API)与Hibernate**: - JPA是JavaEE提供的ORM(对象关系映射...
javaee填空题测试.exe
有三种类型的EJB:Session Beans(会话bean)、Message-driven Beans(消息驱动bean)和Entity Beans(实体bean)。 5. **JMS(Java Message Service)**:JMS提供了一种标准API来发送和接收消息,用于实现异步通信...
在本项目中,我们将探讨JavaEE架构下的核心技术和实现细节。 首先,JavaEE(Java Enterprise Edition)是Oracle公司提供的一个用于构建企业级分布式应用程序的框架。它包含了一系列的服务器端组件,如Servlet、JSP...
JavaEE课程设计:票据管理系统源码 JavaEE课程设计:票据管理系统源码 JavaEE课程设计:票据管理系统源码 JavaEE课程设计:票据管理系统源码 JavaEE课程设计:票据管理系统源码 JavaEE课程设计:票据管理系统...
JavaEE 应用程序的运行需要一个支持JavaEE标准的应用服务器。常见的JavaEE应用服务器包括: - **GlassFish**:由Oracle提供的开源JavaEE应用服务器。 - **WildFly**(原名JBoss AS):Red Hat公司的开源应用服务器。...
EJB提供了事务管理、安全性、持久性等功能,分为三种类型:会话Bean(Session Beans)、实体Bean(Entity Beans,现在通常使用JPA来替代)和消息驱动Bean(Message-Driven Beans)。 4. **JMS**:Java Message ...
这些命名空间下的类和接口是构建JavaEE应用的基础,开发者通常会用它们来实现业务逻辑、数据访问和服务器交互。 通过解压并分析这个JavaEE Src.zip,开发者可以深入理解JavaEE的架构和工作原理,学习如何使用JavaEE...
Android Studio作为官方IDE,提供了丰富的设计工具和调试功能,使开发者能够直观地设计和测试界面。 JavaEE和Android在界面设计上的一个重要区别在于它们的运行环境。JavaEE运行在服务器端,界面与逻辑分离,用户...