实验二、用TDD模式开发求N的阶乘程序

  • 格式:doc
  • 大小:299.00 KB
  • 文档页数:4

一.实验目的及要求
1、了解单元测试的重要意义
2、初步掌握JUnit的用法
3、了解TDD(测试驱动开发)的理念,初步掌握TDD模式程序开发方法二.实验内容及步骤
1、建立Java项目:TDDDemoProject
2、建立包com.whut,com.whut.unittest
3、在包com.whut.unittest建立一个单元测试类TestCalcFact
4、在类TestCalcFact中新建一个方法testCalc()
5、对该方法做相应修改:
public class TestCalcFact extends TestCase {
CalcFact calcFact;
protected void setUp() throws Exception {
super.setUp();
calcFact = new CalcFact();
}
protected void tearDown() throws Exception {
super.tearDown();
}
public void testCalc() {
assertEquals(0, calcFact.calc(-1));
}
}
6、在包com.whut内建立CalcFact类及方法public long calc(int n)
public long calc(int n) {
long result = 0;
if (n < 0) {
result = 0;
}
return result;
}
7、运行测试类TestCalcFact,测试通过OK
8、在testCalc中增加断言:
assertEquals(1, calcFact.calc(0));
assertEquals(1, calcFact.calc(1));
9、运行测试类TestCalcFact,测试不通过。

10、修改类CalcFact方法calc:
if (n < 0) {
result = 0;
} else if (n == 0 || n == 1) {
result = 1;
}
11、在testCalc中增加断言:
assertEquals(3628800, calcFact.calc(10));
12、运行测试类TestCalcFact,测试不通过。

13、修改类CalcFact方法calc:
if (n < 0) {
result = 0;
} else if (n == 0 || n == 1) {
result = 1;
} else {
result = 1;
for (int i = 1; i <= n; i++) {
result = result * i;
}
}
14、在testCalc中增加断言:
assertEquals(0, calcFact.calc(21));
15、运行测试类TestCalcFact,测试不通过。

16、修改类CalcFact方法calc:
public long calc(int n) {
long result = 0; //0表示没有定义
if (n < 0 || n > 20) {
result = 0;
} else if (n == 0 || n == 1) {
result = 1;
} else {
result = 1;
for (int i = 1; i <= n; i++) {
result = result * i;
}
}
return result;
}
17、运行测试类TestCalcFact,测试通过OK。

18、至此,我们获得了两份源码:一份程序源代码,一份测试源代码三.实验过程
四.实验小结
通过此次试验,我了解什么是单元测试,并且初步掌握了Junit 的用法。

了解TDD (测试驱动开发)的理念,初步掌握TDD 模式程序开发方法。

该程序先编写了一个n!的程序,然后进行测试。

没添加一个断言, 类CalcFact 方法calc 就随之改变,使我学会编程要有严谨的思维,考虑问题要全面。