【JAVA-UT】2、写UT的科学步骤

本节演示如何写一个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);
  }
}

猜你喜欢

转载自blog.csdn.net/liangjing1000/article/details/80060839