- 浏览: 456392 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (354)
- 面向对象分析设计/系统架构 (12)
- Mysql/Orcal11g (13)
- JSP/Java//Python/Xharbour (66)
- 软件测试 (21)
- 信息安全小知识 (1)
- Android (5)
- IT生活/哲学/兵法 (23)
- 软件工程/UML/需求分析学习与实践 (6)
- 操作系统/网络/组成原理 (9)
- 持续集成Maven/Hudson/自动化测试 (9)
- eBay /Paypal developer (10)
- Hadoop/HBase/Solr (0)
- 重构分析及其思考 (2)
- 企业架构 (7)
- 分析模式/设计模式 (4)
- SSH学习笔记 (1)
- Quartz及其JWatch监控 (0)
- Linux服务器 (0)
- ExtJs学习笔记 (1)
- 重读java编程思想 (3)
- ESB/SOA/WebServices (0)
- SpringMVC/Struts/Hibernate/Spring (7)
- Xharbour/Pelles C/ SQLite3 (0)
- Magento 电商 (1)
- Object C (1)
- note/redis (0)
- SpringBoot (0)
最新评论
-
snow8261:
太粗略了。
企业架构之数据架构 -
haithink:
面试成功没?
JVM 加载Class文件的原理及其机制 -
feisi0003731843:
不好意思我没有重启,重启后好多了,可有的地方回放还是不成功的。 ...
Selenium IDE测试ExtJs一种测试解决办法 -
feisi0003731843:
这个好像不行吧,我试过了不好使啊。还是用id来做的。不能用啊。 ...
Selenium IDE测试ExtJs一种测试解决办法 -
yuchensuifeng:
您好,静态页面是可以的,但是,我指定error-page为js ...
JSP创建错误处理页面
问题:
setter方法怎么简单,测试它是不是浪费时间呢?而且价值也不大!
情景:
JUnit新手常常问的问题是:“这个set方法是否应该测呢”其实如果你谨慎认为测试是来预防错误的,那么你想这个虽然简单但是也是可能出现错误的话,就应该测试。
方法:
最常见的set方法是在JavaBean中,bean对象有点像一个数据包:它包装了一堆数据,这些数据对外可读可写。例如:
描述步骤:
1. 将Property改为你要测试的bean属性值名称。
2. 创建一个类的实例
3. 如果newPropertyValue是复杂类型,比如另外一个JavaBean的索引,就想要地初始化newPropertyVale
4. 如果property是一个比字符串更复杂的对象,那么你要保证property所属的类的equals方法已经被恰当地实现。
讨论:
如果你没有相应的get方法,并且不愿仅仅为了测试set方法而添加它,那么你需要找出set方法的可观测的点,并且验证它。
另外一种常见的set方法应用是在Command设计模式中。如果命令被提交给命令解释器以获得执行,那么命令应该有一个相应的get方法:否则的话,命令解决器如何获取输入的参数呢?另外,如果命令遵从“行为”模式(也就是说提供自己的执行方法),那么命令本身就能完全包括输入的参数,这样就没办法直接验证set方法的行为了。这种情况下,就必须执行该命令并分析,以验证输入的参数是否正确地被set方法使用。
看个简单的例子:(该例子主要是执行银行转账行为类。)
虽然这个实现中的方法都很简单,但我们不得不使用 execute()方法来测试各种set方法,因为我们没有其他可以观测的点。
注意这个实现严格遵循了execute()方法的规范:不接受任何参数。一般来讲,程序员执行这个方法是为了让超类或者接口执行当前的execute()方法。因为这个动作自己获取参数并自动执行,因此我们也不清楚,按照这个规范进行设计到底带来了声明好处。为了验证这个类的方法,我们将提交我们自己的Bank类,以验证传递给transfer方法的参数。这种办法仅有的问题是我们提交的严格“假”银行对象,而不是严格产品代码中真正使用的银行对象。可以选择一个新的execute()方法,并在bank类中公用一个setInstance方法供我们自由提交bank对象。
例如:
测试代码
setter方法怎么简单,测试它是不是浪费时间呢?而且价值也不大!
情景:
JUnit新手常常问的问题是:“这个set方法是否应该测呢”其实如果你谨慎认为测试是来预防错误的,那么你想这个虽然简单但是也是可能出现错误的话,就应该测试。
方法:
最常见的set方法是在JavaBean中,bean对象有点像一个数据包:它包装了一堆数据,这些数据对外可读可写。例如:
public void testSetProperty(){ Bean bean = new Bean(); bean.setProperty(newPropertyVale); assertEquals(newPropertyValue, bean.getProperty()); }
描述步骤:
1. 将Property改为你要测试的bean属性值名称。
2. 创建一个类的实例
3. 如果newPropertyValue是复杂类型,比如另外一个JavaBean的索引,就想要地初始化newPropertyVale
4. 如果property是一个比字符串更复杂的对象,那么你要保证property所属的类的equals方法已经被恰当地实现。
讨论:
如果你没有相应的get方法,并且不愿仅仅为了测试set方法而添加它,那么你需要找出set方法的可观测的点,并且验证它。
另外一种常见的set方法应用是在Command设计模式中。如果命令被提交给命令解释器以获得执行,那么命令应该有一个相应的get方法:否则的话,命令解决器如何获取输入的参数呢?另外,如果命令遵从“行为”模式(也就是说提供自己的执行方法),那么命令本身就能完全包括输入的参数,这样就没办法直接验证set方法的行为了。这种情况下,就必须执行该命令并分析,以验证输入的参数是否正确地被set方法使用。
看个简单的例子:(该例子主要是执行银行转账行为类。)
public class BankTransferAction{ private String sourceAccountId; private String targetAccountId; private Money amount; public void setAmount(Money amount){ this.amount = amount; } public void setSourceAccountId(String sourceAccountId){ this.sourceAccountId = sourceAccountId; } public void setTargetAccountId(String targetAccountId){ this.targetAccountId = targetAccountId; } public void execute(){ Bank bank = Bank.getInstance(); bank.transfer(sourceAccountId, targetAccountId, amount); } }
虽然这个实现中的方法都很简单,但我们不得不使用 execute()方法来测试各种set方法,因为我们没有其他可以观测的点。
注意这个实现严格遵循了execute()方法的规范:不接受任何参数。一般来讲,程序员执行这个方法是为了让超类或者接口执行当前的execute()方法。因为这个动作自己获取参数并自动执行,因此我们也不清楚,按照这个规范进行设计到底带来了声明好处。为了验证这个类的方法,我们将提交我们自己的Bank类,以验证传递给transfer方法的参数。这种办法仅有的问题是我们提交的严格“假”银行对象,而不是严格产品代码中真正使用的银行对象。可以选择一个新的execute()方法,并在bank类中公用一个setInstance方法供我们自由提交bank对象。
例如:
public class BankTransferAction{ private String sourceAccountId; private String targetAccountId; private Money amount; public void setAmount(Money amount){ this.amount = amount; } public void setSourceAccountId(String sourceAccountId){ this.sourceAccountId sourceAccountId; } public void setTargetAccountId(String targetAccountId){ this.targetAccountId = targetAccountId; } public void execute(){ execute(Bank.getInstance()); } public void execute(Bank bank){ bank.transfer(sourceAccoutId, targetAccountId, amount); } }
测试代码
public class BankTransferActionTest extends TestCase{ public void testSettingInputParameters(){ BankTransferAction action = new BankTransferAction(); action.setSourceAccountId("source"); action.setTargetAccountId("target"); action.setAmount(Money.dollars(100)); action.execute(new Bank(){ public void transfer (String sourceAccountId, String targetAccountId, Money amount){ assertEquals("source", sourceAccountId); assertEquals("target",targetAccounntId); assertEquals(Money.dollars(100), amount); } }); } }
发表评论
-
YourKit Java Profiler 9.5.1 分析思考一
2010-12-10 09:06 2474以下是我对使用YoutKit 对程序分析的一些想法! 程序分 ... -
YourKit Java Profiler 9.5.1 试用总结一
2010-12-06 09:15 3759近日接到学习任务研究下YourKit来解决项目中对内存 ... -
性能测试(并发负载测试)测试分析
2010-01-04 10:47 1066声明:此文章是从网络上转载下来的,至于真实出处无法找到。 ... -
使用JUnit创建TestCase
2009-12-29 22:05 3134在学会了对单个方法、类、接口等进行测试后,接着看看这么创建 ... -
如何防范SQL注入<测试篇>
2009-12-24 11:48 4212前一篇是关于编程防 ... -
Junit---Introduce a Base Test Case
2009-12-21 20:24 1131问题: 如果有一个通用方法的集合并且希望在测试中尽可能多的 ... -
怎么提取一个测试层次结构
2009-12-18 20:29 1120问题: 如果有多个 ... -
怎么抽取一个测试模块?
2009-12-17 20:21 904[/b][b]问题: 当为一个产品类编写了好几个测试,它 ... -
Test an object that instantiates other objects
2009-12-10 20:30 987问题: 你想测试一个 ... -
Junit(Let collections compare themselves)
2009-12-08 19:26 1537问题: 你想验证容器的内容,而你第一个想到的办法是逐个 ... -
测试是否抛出正确的异常(Test throwing the right exception)
2009-12-07 21:28 5313问题: 你是否想 ... -
Test a JavaBean
2009-12-05 18:10 924问题: 如果要测试一 ... -
Test an interface(测试接口)
2009-11-30 22:52 2313问题: 你是否想过怎么测试接口,但是又苦于接口没有办法 ... -
Junit Test a getter
2009-11-28 12:16 1100问题: 怎么测试一个对象的get方法?怎么判断哪些需要 ... -
Junit测试构造函数
2009-11-28 00:22 5112构造函数对于测试者 ... -
测试没有返回值的方法
2009-11-26 22:28 7140在使用JUnit进行单元测试的时候,常会碰到返回值为viod的 ... -
JUnit 测试学习笔记二
2009-11-16 22:43 1461现在看看JUnit怎么测试equals()方法 首先分析下e ... -
JUnit测试学习笔记一
2009-11-09 22:25 2054在软件测试中,最基 ... -
何为软件可测试
2009-10-26 11:04 814软件工程发展了二十多 ... -
自动化测试
2009-10-13 09:34 1060关于自动化测试现在 ...
相关推荐
Junit提供了一些注解和断言,例如@Before、@After、@Test等,用于描述测试用例的生命周期和测试用例的断言。Junit单元测试可以帮助开发者快速地测试Java应用程序,提高软件的可靠性和稳定性。 四、 数据库开发过程...
- 测试方法以`test`开头,如`testMyMethod`,JUnit会按方法定义的顺序执行。 - 使用断言如`assertXXX`和`fail`来判断测试结果,辅助日志信息可以帮助定位问题。如果方法抛出异常,会被视为错误;断言失败则表示...
### JUnit单元测试知识点 ...无论是简单的单个方法测试还是复杂的多方法测试组合,JUnit都能提供丰富的功能支持。掌握JUnit的基本用法对于提高代码质量、减少bug、加快开发进度等方面都有着重要的作用。
2. 在测试类中,使用`@Test`注解标注测试方法。 3. 在测试方法内,获取要测试的类实例,如`Commodity_Child child = new Commodity_Child()` 4. 使用`child.getClass()`获取`Commodity_Child`的`Class`对象。 5. ...
相比早期的JUnit 3.x版本,4.1不再要求测试方法必须以`test`开头,而是通过`@Test`注解来标记测试方法。 在Eclipse IDE中,使用JUnit非常方便,因为IDE通常已经集成了JUnit库。创建一个新的Java项目后,你可以开始...
10. **避免依赖测试顺序**:尽管 JUnit 使用 Vector 存储测试方法,测试顺序可能会因平台而异,因此测试应独立于执行顺序。 通过遵循这些实践,开发者可以有效地利用 JUnit 来保障代码的质量,提高开发效率,以及...
`@Test`注解标记测试方法,SpringJUnit会自动运行这些方法,并且支持各种断言,例如`assertEquals`、`assertTrue`等,来验证方法的预期结果。 在实际使用中,我们通常会创建一个测试类,继承自`SpringJUnit4Class...
在JUnit 4.1中,测试方法的命名可以自由选择,不再强制要求以`test`开头,但需要使用`@Test`注解来标识。同时,`setUp`和`tearDown`方法分别用`@Before`和`@After`注解,它们会在每个测试方法执行前后自动调用,用于...
财产断言者这是一个 Java JUnit 测试实用程序,可以轻松测试属性的getter/setter方法。 该实现最初由 Scott Leberknight 编写,并在讨论过 我自己 Josef Betancourt 在时再次讨论了这个问题最近原始源代码存档不可用...
- **Code a little, test a little:** 在编写代码的过程中随时进行测试,即编写一小段代码后立即对其进行测试。 - **Code all, test all:** 在完成全部编码工作后,再进行全面的测试。 **1.3 责任主体** - **由...
本文将详细探讨如何在一个空的Spring Boot 2项目中集成并配置Druid,以及如何启动Druid的监控平台,同时提供Controller、Service、Entities和JUnit测试的例子。 首先,我们需要创建一个基于Spring Boot 2的新项目,...
Eclipse for JavaEE 图解教程 Eclipse 是一个功能强大且...通过本教程,我们可以学习到 Eclipse 的一些重要用法,例如自动生成 Getter、Setter 和构造方法、自动生成接口和 JUnit 测试类、定制视图与 New 菜单项等。
在JUnit等单元测试框架中,测试执行监听器是一个可以监听测试执行过程的接口,它定义了一系列回调方法,如beforeTest、afterTest、onFailure等。开发者可以通过实现这些方法,自定义测试执行前后的逻辑,比如在每个...
总结起来,"SpringTest"案例旨在展示Spring框架的基本使用方法,包括创建配置文件、定义bean、依赖注入以及在MyEclipse环境中进行测试。通过这个简单的HelloWorld示例,学习者可以对Spring的核心理念和操作有初步的...
`@Test`用于标记测试方法,`@Before`和`@After`则分别用于在每个测试方法执行前和后运行一段代码,进行初始化或清理工作。此外,还有`@Ignore`用于忽略特定测试,`@Expected`用于指定预期的异常等。 `hamcrest-core...
- 使用知名的测试框架,如JUnit、TestNG等,它们提供了丰富的断言方法和测试注解。 - 测试用例应具有独立性,每个测试用例的执行不应依赖于其他测试用例的结果。 - 测试用例应覆盖所有可能的执行路径,确保代码的...
- 实现`Book`类,包括两个属性`id`和`name`及其对应的getter和setter方法。 #### 四、编写JUnit测试用例 - **JUnit**是Java平台上的单元测试框架,广泛用于验证Java类的行为。 - 在NetBeans中创建测试类`BookTest...