VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > 简明python教程 >
  • 软工实践寒假作业(2/2)(2)

先判断是否有type命令,若有则配合for和switch进行指定顺序输出,否则就按原来的的顺序输出

if(map.get(provinceName) != null) {
Province province = map.get(provinceName);
if(typeItem.size() != 0) {
  for(String item : typeItem) {
    switch (item) {
    case "ip":
      System.out.print(" 感染患者" + province.infect + "人");
      osw.write(" 感染患者" + province.infect + "人");
      break;
    case "sp":
      System.out.print(" 疑似患者" + province.seeming + "人");
      osw.write(" 疑似患者" + province.seeming + "人");
      break;
    case "cure":
      System.out.print(" 治愈" + province.cured + "人");
      osw.write(" 治愈" + province.cured + "人");
      break;
    case "dead":
      System.out.print(" 死亡" + province.dead + "人");
      osw.write(" 死亡" + province.dead + "人");
      break;
    default:
      break;
    }
  }
}
else {
  osw.write(" 感染患者" + province.infect + "人 疑似患者" + province.seeming + "人 治愈" + province.cured + "人 死亡" + province.dead + "人");
  System.out.print(" 感染患者" + province.infect + "人 疑似患者" + province.seeming + "人 治愈" + province.cured + "人 死亡" + province.dead + "人");
}

}

六、单元测试截图和描述

@Test1 测试能否正确获得命令行参数

@Test
public void testSolveArgs() {
	String[] order = {"list", "-date", "2020-01-23", "-log", "C:\\Users\\Peter\\Documents\\GitHub\\InfectStatistic-main\\221701126\\log", 
			"-out", "C:\\Users\\Peter\\Documents\\GitHub\\InfectStatistic-main\\221701126\\result\\out.txt", "-type", "ip", "sp", "dead", "-province", "福建", "浙江"};
	InfectStatistic.main(order);
}


@Test2 测试打印一个省的信息

@Test
public void testPrintTheProvince() throws IOException {
		File output = new File("C:\\\\Users\\\\Peter\\\\Documents\\\\GitHub\\\\InfectStatistic-main\\\\221701126\\\\result\\\\out.txt");
		OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(output));
		InfectStatistic.printTheProvince("福建", osw);
		osw.flush();
		osw.close();
}


由于该省份还没有给与任何数据,故都是人数都是0。
@Test3 测试能否打印所有需要打印的省份

@Test
public void testPrintResult() {
	InfectStatistic.outputPath = "C:\\\\Users\\\\Peter\\\\Documents\\\\GitHub\\\\InfectStatistic-main\\\\221701126\\\\result\\\\out.txt";
	InfectStatistic.provinceItem.add("全国");
	InfectStatistic.provinceItem.add("福建");
	InfectStatistic.provinceItem.add("内蒙古");
	InfectStatistic.printResult();
}


可以打印出所有省份,由于没有数据,故人数都为0

@Test4 测试能否获得每行字符串的人数

@Test
public void testGetNumber() {
	String[] testStr1 = {"福建", "新增", "疑似患者", "5人"};
	System.out.println(InfectStatistic.getNumber(testStr1));
	String[] testStr2 = {"湖北", "感染患者", "流入", "福建", "23人"};
	System.out.println(InfectStatistic.getNumber(testStr2));
	String[] testStr3 = {"湖北", "排除", "疑似患者", "15人"};
	System.out.println(InfectStatistic.getNumber(testStr3));
}


能够正确获得

@Test5 测试每个文件的处理,打印出需要处理的文件名

@Test
public void testSolveEveryFile() {
	Vector<String> toHandleFile = new Vector<String>();
	toHandleFile.add("2020-01-22");
	toHandleFile.add("2020-01-23");
	toHandleFile.add("2020-01-27");
	InfectStatistic.solveEveryFile(toHandleFile);
}

@Test6 测试获得目录下的最大日期,打印出目录下最大的日期

@Test
public void testGetMaxDate() {
	System.out.println(InfectStatistic.getMaxDate());
}

@Test7 测试获取目录下符合要求的所有文件,打印出其文件名

@Test
public void testSolveDateOrder() {
	System.out.println("测试1");
	InfectStatistic.targetDate = "2020-01-29";
	InfectStatistic.solveDateOrder(InfectStatistic.targetDate);
	
	System.out.println("测试2");
	InfectStatistic.targetDate = "2020-01-24";
	InfectStatistic.solveDateOrder(InfectStatistic.targetDate);
	
	System.out.println("测试3");
	InfectStatistic.targetDate = "2020-01-27";
	InfectStatistic.solveDateOrder(InfectStatistic.targetDate);
}


@Test8 测试没有date选项的命令,打印出最新日期的日志,测试命令为:list -log "C:\Users\Peter\Documents\GitHub\InfectStatistic-main\221701126\log" "-out" "C:\Users\Peter\Documents\GitHub\InfectStatistic-main\221701126\result\out.txt" "-type" "ip" "sp" "dead" "-province" "福建" "浙江"

@Test
public void testNoDate() {
	String[] order = {"list", "-log", "C:\\Users\\Peter\\Documents\\GitHub\\InfectStatistic-main\\221701126\\log", 
			"-out", "C:\\Users\\Peter\\Documents\\GitHub\\InfectStatistic-main\\221701126\\result\\out.txt", "-type"
			, "ip", "sp", "dead", "-province", "福建", "浙江"};
	InfectStatistic.main(order);
}


@Test9 测试-date选项,参数为2020-01-23的情况

@Test
public void testDate1() {
	String[] order = {"list", "-date", "2020-01-23", "-log", "C:\\Users\\Peter\\Documents\\GitHub\\InfectStatistic-main\\221701126\\log", 
			"-out", "C:\\Users\\Peter\\Documents\\GitHub\\InfectStatistic-main\\221701126\\result\\out.txt"};
	InfectStatistic.main(order);
}


@Test10 测试-date选项,参数为2020-01-25的情况,结果同2020-01-23的情况

@Test
public void testDate2() {
	String[] order = {"list", "-date", "2020-01-25", "-log", "C:\\Users\\Peter\\Documents\\GitHub\\InfectStatistic-main\\221701126\\log", 
			"-out", "C:\\Users\\Peter\\Documents\\GitHub\\InfectStatistic-main\\221701126\\result\\out.txt"};
	InfectStatistic.main(order);
}


@Test11 测试-date选项,参数为2020-01-27的情况

@Test
public void testDate3() {
	String[] order = {"list", "-date", "2020-01-27", "-log", "C:\\Users\\Peter\\Documents\\GitHub\\InfectStatistic-main\\221701126\\log", 
			"-out", "C:\\Users\\Peter\\Documents\\GitHub\\InfectStatistic-main\\221701126\\result\\out.txt"};
	InfectStatistic.main(order);
}


@Test12 测试-date选项,参数为2020-01-28的情况,打印“日期超出范围”

@Test
public void testDate4() { 
	String[] order = {"list", "-date", "2020-01-28", "-log", "C:\\Users\\Peter\\Documents\\GitHub\\InfectStatistic-main\\221701126\\log", 
			"-out", "C:\\Users\\Peter\\Documents\\GitHub\\InfectStatistic-main\\221701126\\result\\out.txt"};
	InfectStatistic.main(order);
} 


@Test13 测试-type选项,参数为cure ip

@Test
public void testType1() {
	String[] order = {"list", "-date", "2020-01-22", "-log", "C:\\Users\\Peter\\Documents\\GitHub\\InfectStatistic-main\\221701126\\log", 
			"-out", "C:\\Users\\Peter\\Documents\\GitHub\\InfectStatistic-main\\221701126\\result\\out.txt", "-type", "cure", "ip"};
	InfectStatistic.main(order);
} 

@Test14 测试-type选项,参数为cure dead ip sp

@Test
public void testType2() {
	String[] order = {"list", "-date", "2020-01-23", "-log", "C:\\Users\\Peter\\Documents\\GitHub\\InfectStatistic-main\\221701126\\log", 
			"-out", "C:\\Users\\Peter\\Documents\\GitHub\\InfectStatistic-main\\221701126\\result\\out.txt", "-type", "cure", "dead", "ip", "sp",
			"-province", "全国", "浙江", "福建"};
	InfectStatistic.main(order);
} 


@Test15 测试-province选项,参数为全国 浙江 福建

@Test
public void testProvince1() { 
	String[] order = {"list", "-date", "2020-01-23", "-log", "C:\\Users\\Peter\\Documents\\GitHub\\InfectStatistic-main\\221701126\\log", 
			"-out", "C:\\Users\\Peter\\Documents\\GitHub\\InfectStatistic-main\\221701126\\result\\out.txt", "-province", "全国", "浙江", "福建"};
	InfectStatistic.main(order);
}


@Test16 测试-province选项,测试需要打印的省份不在文件中出现,参数为陕西 云南

@Test
public void testProvince2() { 
	String[] order = {"list", "-date", "2020-01-23", "-log", "C:\\Users\\Peter\\Documents\\GitHub\\InfectStatistic-main\\221701126\\log", 
			"-out", "C:\\Users\\Peter\\Documents\\GitHub\\InfectStatistic-main\\221701126\\result\\out.txt", "-province", "陕西", "云南"};
	InfectStatistic.main(order);
}


@Test17 测试-province选项,参数为福建 山东 全国 广西

@Test
public void testProvince3() { 
	String[] order = {"list", "-date", "2020-01-23", "-log", "C:\\Users\\Peter\\Documents\\GitHub\\InfectStatistic-main\\221701126\\log", 
			"-out", "C:\\Users\\Peter\\Documents\\GitHub\\InfectStatistic-main\\221701126\\result\\out.txt", "-province", "福建", "山东", "全国", "广西"};
	InfectStatistic.main(order);
}

七、单元测试覆盖率优化和性能测试

单元测试覆盖率,由于测试的比较全面,故覆盖率较高,几乎覆盖了所有代码,还有一些未覆盖的地方即为测试用例不到位或一些异常捕捉语句,提升空间不大


八、代码规范

代码规范

九、心路历程与收获

在这次作业之前,我还没有过团队合作开发的经验,因此不会使用像git这样的版本控制工具,以及像github这样子的开源仓库工具,但是在这次的开发过程中,我尝试的一步一步查询相关的文章,去使用github。
这次的编码任务是疫情统计程序,我认为在学过java的基础上开发这个程序的难度并不大,只不过需要认真的复习一下之前java的知识,但在开发过程中比较重要的就是学会记录自己的代码版本,虽然说这次还是个个人开发的小作业,但是养成存储代码版本这个好习惯是每个开发人员必备的,因此我使用了githubDestop来记录自己对这个项目的完善工程,我将这个项目分成许多模块,当完成一个模块的开发以后我就commit一下,这样就算后续代码出了什么问题,我也能根据历史记录回溯到之前正常的版本,可以说学会这项技能是十分方便和必要的。
在整个任务完成后,我还学会了单元测试。何谓单元测试?就是通过将许多测试函数封装成一个类,这样就一个一次性的跑完所需要进行的所有测试,而不需要在命令行一个一个例子去试验,提高了测试的效率,测试也是开发中的一个必不可少的流程,有了测试,我就能清晰的知道自己的代码还存在哪些不足,存在哪些bug,予以修复后,就可以进行一次commit,这样代码的稳定性就在不断的提升中,而且学会使用单元测试来测试自己的代码也是一个开发人员的责任,自己写的代码自己测,这样以后如果代码需要修改维护,就可以对症下药,而不会手忙脚乱。
测试完成以后,我通过开发工具eclipse测试了一下代码覆盖率和性能,发现了自己在编写代码过程中一些不够完美的语法处理,有一些不会被用到的方法,或者说有一些语句的顺序或者嵌套十分繁杂,都会降低覆盖率和性能,因此就着覆盖率的展示,我照着一个一个方法去改进,删除了不必要的语句,调整了语句结构,提升了一些覆盖率和性能,开发人员在开发过程中,不可只关注到任务的完成,还需要关心系统的性能问题,因为只有我们自己了解我们自己的代码,因此自己对此做出一些简单的优化是很有必要性的,也是一个好习惯,一个优秀的项目不仅应该完成用户的需求,还应该在性能方便有显著的优势,哪怕提升了一点的性能,在计算机世界中也是巨大的进步。
剩下的一些工作例如代码规范和文档的攥写也是十分重要的,不仅考察一个开发人员的编程能力,更是考验其程序的规范性和有序性,一个开发人员不应该是混乱无章的,反而应该井井有序。
通过这次的任务,我深入的理解的软件工程的开发流程,十分期待以后的多人协作,但是在多人协作之前,我们每个人应该要先规范好自己,这样整个团队才能有序团结。

十、五个相关仓库

1.vue.js

基于 vue2 + vuex 构建一个具有 45 个页面的大型单页面应用,模仿饿了么打造的一个购物demo,适合找不到demo巩固的学习人员进行练习。

2.ant design pro

是基于Ant Design这个框架搭建的中后台管理控制台的脚手架,使用其可快速搭建ant d框架,便于开发,节约时间。

3.react select

React的选择控件,最初构建用于KeystoneJS,是一种用来开发React组件的方法,组件可以开箱即用,也可以自行定制。

4.h5模板

腾讯微信优化的H5动效模板,帮助你快速构建全屏滚动型H5页面。

5.css.animation

一个跨浏览器的CSS动画库,简单易用,拥有许多可以直接使用的控件。

作者:唐靖钧
出处:http://www.cnblogs.com/shwee/


相关教程
          
关于我们--广告服务--免责声明--本站帮助-友情链接--版权声明--联系我们       黑ICP备07002182号