最近我们公司要求开发人员必须写测试用例,组织了TDD培训,测试驱动开发,同时衡量代码的圈复杂度,我记录下初次使用的过程。
编写测试用例,查看用例覆盖度
1、要编写测试用例,并看下测试用例的覆盖度:
先在pom.xml中引入依赖
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.6.2</version>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
</dependency>
2、编写测试代码:我一般使用跟代码相同路径下写test单元测试代码:
测试代码如下:
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class StringUtilTest {
@Test
public void upperFirstSeqenceCaseTest() {
//测试是否相等
assertEquals("AssertTest", StringUtil.upperFirstSeqenceCase("assert_test"));
//测试单个单词
assertEquals("Assert", StringUtil.upperFirstSeqenceCase("assert"));
//测试复杂下划线情况
assertEquals("AssertTest", StringUtil.upperFirstSeqenceCase("_assert_test_"));
//测试连续下划线
assertEquals("AssertTest", StringUtil.upperFirstSeqenceCase("assert__test"));
//测试大小写混合
assertEquals("AssertTestExample", StringUtil.upperFirstSeqenceCase("assErT_tesT_exaMpLe"));
//测试有数字
assertEquals("AssertTest123", StringUtil.upperFirstSeqenceCase("assert_test123"));
//测试特殊字符
assertEquals("!@#$%^&*()", StringUtil.upperFirstSeqenceCase("!@#$%^&*()"));
//测试没有下滑线情况
assertEquals("Assert test", StringUtil.upperFirstSeqenceCase("assert test"));
}
@Test
public void nullTest() {
//测试为空的情况
assertEquals("", StringUtil.upperFirstSeqenceCase(""));
}
}
3、运行,下面的选择表示显示测试用例覆盖度。
4、运行完后,右边会有框显示出来,提示覆盖度,也可以选择导出
查看代码复杂度
1、idea中下载插件
2、运行查看圈复杂度等
CogC(认知复杂度):这个指标用于评估代码逻辑的复杂度。
ev(G)(基本复杂度):用来衡量程序的非结构化程度。
iv(G)(模块设计复杂度):这个指标衡量模块判定结构,即模块和其他模块的调用关系。
v(G)(圈复杂度):用于衡量一个模块判定结构的复杂程度。