wcPro
github项目地址:
https://github.com/ChAnYaNG97/wcPro
PSP表格:
PSP2.1 | PSP阶段 | 预计耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 30 |
.Estimate | .估计这个任务需要多长时间 | 30 | 30 |
Development | 开发 | 285 | 290 |
.Analysis | .需求分析(包括学习新技术) | 25 | 30 |
.Design Spec | .生成设计文档 | 30 | 30 |
.Design Review | .设计复审(和同事审核设计文档) | 40 | 40 |
.Coding Standard | .代码规范(为目前的开发制定合适的规范) | 30 | 20 |
.Design | .具体设计 | 50 | 60 |
.Coding | .具体编码 | 60 | 50 |
.Code Review | .代码复审 | 20 | 20 |
.Test | .测试(自我修改,修改代码,提交修改) | 30 | 40 |
Reporting | 报告 | 120 | 110 |
.Test Report | .测试报告 | 50 | 50 |
.Size Measurement | .计算工作量 | 30 | 20 |
.Postmortem & Process Improvement Plan | .事后总结,并提出过程改进计划 | 40 | 40 |
合计 | 435 | 430 |
接口实现
此次实验我负责其他模块(main函数)。实现代码如下:
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args)
{
long st = System.nanoTime();
if(args.length < 1)
{
System.err.println("Please set the file name.");
}
IOController controller = new IOController(args[0]);
WordCounter wc = new WordCounter();
String line;
while((line = controller.readLine()) != null)
{
wc.countWord(line);
}
System.out.println(wc.countList.entrySet());
controller.writeFile(wc.countList);
System.out.println((System.nanoTime()-st) / 1e9);
}
}
工作过程如下:
- 判断是否输入文件
- 对文件词数进行统计
- 输出程序运行时间
测试用例设计
白盒测试
一共有三条路径:
A->B->C->G: "Please set the file name."
A->B->D->E->G:result.txt
A->B->D->F->G:case.txt
黑盒测试
@Test
public void testCountWord1()
{
wc.countWord("this is a test a a a ");
expected.put("this",1);
expected.put("is",1);
expected.put("a",4);
expected.put("test",1);
assertEquals(expected, wc.countList);
}
//test2:无连字符,带常见字符和数字
@Test
public void testCountWord2()
{
wc.countWord("this]]\'$\'is\'a123test");
expected.put("this",1);
expected.put("is",1);
expected.put("a",1);
expected.put("test",1);
assertEquals(expected, wc.countList);
}
//test3:带连字符,无常见字符和数字
@Test
public void testCountWord3()
{
wc.countWord("this-is-a-test is is");
expected.put("this-is-a-test",1);
expected.put("is",2);
assertEquals(expected, wc.countList);
}
//test4:带连字符且位于单词间,无常见字符和数字
@Test
public void testCountWord4()
{
wc.countWord("this is a test this-is-a-test");
expected.put("this",1);
expected.put("is",1);
expected.put("a",1);
expected.put("test",1);
expected.put("this-is-a-test",1);
assertEquals(expected, wc.countList);
}
//test5:带连字符且位于单词后,无常见字符和数字
@Test
public void testCountWord5()
{
wc.countWord("this- is a-test");
expected.put("this",1);
expected.put("is",1);
expected.put("a-test",1);
assertEquals(expected, wc.countList);
}
//test6:带连字符且位于数字间,无常见字符
@Test
public void testCountWord6()
{
wc.countWord("this is1-2 a-test");
expected.put("this",1);
expected.put("is",1);
expected.put("a-test",1);
assertEquals(expected, wc.countList);
}
//test7:带连字符,带常见字符和数字
@Test
public void testCountWord7()
{
wc.countWord("(see Box 3–2).8885d_c01_016");
expected.put("see",1);
expected.put("box",1);
expected.put("d",1);
expected.put("c",1);
assertEquals(expected, wc.countList);
}
//test8:输入为空
@Test
public void testCountWord8()
{
wc.countWord("");
assertEquals(expected, wc.countList);
}
小组贡献
0.20
扩展任务
规范选择
选择《阿里巴巴Java开发手册》的规范对代码进行规范分析
检查结果