【week3】词频统计 单元测试

使用Eclipse 集成的Junit进行单元测试。单元测试的核心包括断言、注解。

测试代码如下:

       @BeforeClass
	// 针对所有测试,只执行一次,且必须为static void
	public static void setUpBeforeClass() throws Exception {
		System.out.println("in BeforeClass================");
	}

	@AfterClass
	// 针对所有测试,只执行一次,且必须为static void
	public static void tearDownAfterClass() throws Exception {
		System.out.println("in AfterClass=================");
	}

	@Before
	// 初始化资源
	public void before() {
		System.out.println("in Before");
	}

	@After
	// 释放资源
	public void after() {
		System.out.println("in After");
	}

	@Test
	public void testMain() {
		  System.out.println("请输入要统计的文件路径");
              Scanner sc = new Scanner(System.in);
              String road = sc.nextLine();
              FileInputStream fis = new FileInputStream(road);// 要读的文件路径
              File f = new File(road);
              File s[] = f.listFiles();
              for (int i = 0; i < s.length; i++) {
                  String fileName = s[i].getName();
                  if (fileName.endsWith(".txt")) {
                      sortAndOutput(road);
                  }
              }
              System.out.println("测试main");
              fail("Not yet implemented"); }

 

 

运行结果:

一个测试类单元测试的执行顺序为:

@BeforeClass –> @Before –> @Test –> @After –> @AfterClass

每一个测试方法的调用顺序为:

@Before –> @Test –> @After

出现程序运行正确但是测试结果出现错误的情况。

 

创建一个hashmap存储预期答案

static Map<String, Integer> map = new HashMap<String, Integer>();
	@Parameters
	//指定测试类的测试数据集合
	   map.put("my", 1);
          map.put("english", 1);
          map.put("is", 1);
          map.put("very", 2);
          map.put("poor", 2);
          return Arrays.asList(new Object[][] {
              { "D:\1.txt", map  },
          }); }

 代码覆盖率就是所写的单元测试所测试到的代码比例。

PSP:

单元测试感受:确定期待的输出结果,与运行结果对比,使自己直观的感受到正确与错误是很好的方法。

由于自己的代码没有分功能写成不同的函数,单元测试效果不好,有待进一步学习。

 git:git.coding.net/yumiaomiao/WordCountJunit.git

ssh: git@git.coding.net:yumiaomiao/WordCountJunit.git

posted @ 2016-09-28 20:16  于淼  阅读(193)  评论(1编辑  收藏  举报