首页 > 代码库 > 【week3】词频统计 单元测试

【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

【week3】词频统计 单元测试