实验二 单元测试

1.(1)写一个程序,用于分析一个字符串中各个单词出现的频率,并将单词和它出现的频率输出显示。(单词之间用空格隔开,如“Hello World My First Unit Test”);

 (2)编写单元测试进行测试;

   (3)用ElcEmma查看代码覆盖率,要求覆盖率达到100%。

代码如下:

package cn.rocky;
import java.util.Scanner;
import java.util.Map;
import java.util.LinkedHashMap;

public class WordRate{

/**
* @param args
*/
void run() {

System.out.println("请输入一个字符串:");
Scanner sc = new Scanner(System.in);
String Str = sc.nextLine();
String[] word = Str.split(" ");

Map<String,Integer> map = new LinkedHashMap<String,Integer>();

for(String s : word){
if(map.containsKey(s)){
Integer val = map.get(s);
val += 1;
map.put(s, val);
}else{
map.put(s, 1);
}
}
System.out.println(map);
}

}

 

package cn.rocky;

public class Run{
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
WordRate word = new WordRate();
word.run();
}

}

结果:

单元测试:

package cn.rocky;

import org.junit.Test;

public class WordRateTest {

@Test
public void testMain() {
String Str = "Hello World My First Unit Test";
}

}

覆盖率:

总结:

(1).采用HashMap遍历对输入的语句是以无序输出的,即单词的顺序错乱,因此采用LinkedHashMap顺序遍历,能够对输入的各个子字符串以顺序的形式输出。

(2).一开始只写了一个类WordRate ,用ElcEmma查看代码覆盖率时发现只达到95%左右,原因在于类名没有被执行到。于是建立了一个实现类Run来对WordRate进行实现输出,使代码覆盖率达到了100%。好处:实现类运用了面向对象的思想,当WordRate类有n个构造方法时,建立实现类的main方法能够实现多个方法,想调用哪个就能灵活的调用。

(3)使用foreach循环,对比传统的方法,代码显得更加简洁。

2.

(1)把一个英语句子中的单词次序颠倒后输出。例如输入“how are you”,输出“you are how”;

(2)编写单元测试进行测试;

(3)用ElcEmma查看代码覆盖率,要求覆盖率达到100%

代码如下:

package cn.rocky2;

import java.util.Scanner;

public class WordReverse {
void run(){
System.out.println("请输入一个字符串:");
Scanner sc = new Scanner(System.in);
String Str = sc.nextLine();
String[] word = Str.split(" ");
for (int i = word.length - 1; i >= 0; i--){
System.out.println(word[i]);
}
}

}

package cn.rocky2;

public class Run {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
WordReverse word = new WordReverse();
word.run();
}

}

单元测试:

package cn.rocky2;
import org.junit.Test;

public class WordReverseTest {

@Test
public void testRun() {
String str = "how are you";
}

}

结果:

代码覆盖率:

总结:

在第一题的基础上运用for循环倒序输出即可实现!

原文地址:https://www.cnblogs.com/igottogo/p/5341209.html