打字猴:1.700453185e+09
1700453185 编写高质量代码:改善Java程序的151个建议 [:1700438223]
1700453186 编写高质量代码:改善Java程序的151个建议 建议145:不要完全依靠单元测试来发现问题
1700453187
1700453188 单元测试的目的是保证各个独立分割的程序单元的正确性,虽然它能够发现程序中存在的问题(或缺陷,或错误),但是单元测试只是排查程序错误的一种方式,不能保证代码中的所有错误都能被单元测试挖掘出来,原因有以下四点。
1700453189
1700453190 (1)单元测试不可能测试所有的场景(路径)
1700453191
1700453192 单元测试必须测试的三种数据场景是:正常场景、边界场景、异常场景。一般情况下,如果这三种测试场景都能出现预期的结果,则认为代码正确,但问题是代码是人类思维的直观表达,要想完整地测试它就必须写出比生产代码多得多的测试代码,例如有这样一个类:
1700453193
1700453194 public class Foo{
1700453195
1700453196 //除法计算
1700453197
1700453198 public int divid(int a, int b){
1700453199
1700453200 return a/b;
1700453201
1700453202 }
1700453203
1700453204 }
1700453205
1700453206 就这一个简单的除法计算,如果我们要进行完整的测试就必须建立三个不同的测试场景:正常数据场景,用来测试代码的主逻辑;边界数据场景,用来测试代码(或数据)在边界的情况下逻辑是否正确;异常数据场景,用来测试出现异常非故障时能否按照预期运行,测试类如下:
1700453207
1700453208 public class FooTest{
1700453209
1700453210 //构建测试对象
1700453211
1700453212 private Foo foo=new Foo();
1700453213
1700453214 //正常测试场景
1700453215
1700453216 @Test
1700453217
1700453218 public void testDividNormal(){
1700453219
1700453220 //断言100除以10的结果为10
1700453221
1700453222 assertEquals(10,foo.divid(100,10));
1700453223
1700453224 }
1700453225
1700453226 //边界测试场景
1700453227
1700453228 @Test
1700453229
1700453230 public void testDividBroader(){
1700453231
1700453232 //断言最大值除以最小值结果为0
1700453233
1700453234 assertEquals(0,foo.divid(Integer.MAX_VALUE, Integer.MIN_VALUE));
[ 上一页 ]  [ :1.700453185e+09 ]  [ 下一页 ]