本节演示如何写一个ut。
首先给出一个类Result。
public Class Result {
private String downLoadStatus;
private String failureReason;
public Result(String status, String reason) {
downLoadStatus= status;
failureReason= reason;
}
@Override
public String toString() {
return "downLoadStatus: "+ downLoadStatus+ ", "
+ "failureReason: " + failureReason;
}
}
类Result中:
属性downLoadStatus,表示下载的状态,如“Ongoing”,“Ok”,“Fail”。
属性failureReason,表明失败的具体原因,例如“cannot connect”。
方法toString,用于将这两个属性值组合成为一个string。
接下来,开始写ut了!
第1步:确定目标。
还记得吗,ut是method级别的测试。
在本例中,ut就是对toString方法进行测试。
toString方法,能不能按规定的格式,将两个值合并成一个值呢?
这就是ut所要解决的问题。
也就是它要达到的目标。
第2步:提出假设。
假设toString的功能正常。
第3步:推测结论。
如果toString的功能正常,那么,当用”Fail”, “cannot connect”实例化一个对象后,执行toString方法,其返回值应当与expectedString相等。
用java语句表达如下:
Result result = new Result("Fail", "cannot connect");
String expectedString = "downLoadStatus: Fail, failureReason: cannot connect";
第4步:进行测试。
在result这个对象上,执行toString方法,并记录实际值。
用java语句表示为:
String realString = result.toString();
第5步:比较结果。
toString的实际返回值与expectedString相等吗?
将toString方法实际的返回值,与expectedString进行比较。
用java语句表示为:
Assert.assertEquals(expectedString, realString);
如果相等,assertEquals什么也不做。
如果不相等,则抛出异常。
通过比较的结果,可知toString的功能是否如预期那样。
如果抛出了异常,则表示与预期不同。
第6步:编写代码
首先,创建一个类。
命名为ResultTest,表明这个类是为了测试Result。
public class ResultTest {
}
其次,创建一个方法。
将1-5步中的java语句放在这个方法中:
@Test
public void should_returnString() {
// given
Result result = new Result("Fail", "cannot connect");
String expectedString = "downLoadStatus: Fail, failureReason: cannot connect";
// when
String realString = result.toString();
// then
Assert.assertEquals(expectedString, realString);
}
这个方法带有注解@Test。
一个@Test注解的方法,在Junit中,用于验证一个功能。
一个类,可以包含若干个Test方法。
请注意这个方法的声明:
public
返回值void
参数为空
这些是规则,必须遵守。
最终代码如下:
public class ResultTest {
@Test
public void should_returnString() {
// given
String expectedString = "downLoadStatus: Fail, failureReason: cannot connect";
Result result = new Result("Fail", "cannot connect");
// when
String realString = result.toString();
// then
Assert.assertEquals(expectedString, realString);
}
}