1. File——>Settings——>Plugins,搜索Squaretest,然后install就好了,插件安装完成后需要重启一下。
2. 重启之后,菜单栏就多了一项Squaretest ,点击Squaretest 后,菜单的最后一项:Generate Test Methods(Help)来看它的一个演示。
演示首先:我们打开一个类,这个类就是我们即将要作为实验的类。Squaretest生成的单元测试方法都是只能生成public的。
其次:光标定位到代码里,右击鼠标选择Generate…
会出现Generate Test 和 Generate Test - confirm Mocks 两个选项,第一次的话选择第二个选项。
选择第二个后,则需要你选择一下单元测试的模板,我选择的是JUnit4MockitoSpring.java.ft,也可以选择别的。【快捷键: Alt+M】
选择玩模板后,弹出Select Dependencies to Mock 选择要模拟的依赖项,然后点击OK,则生成了EvaluateWeightServiceImplTest测试类。
注意:自动生成单元测试,还是需要我们手动进行修改补充的,针对项目业务需求进行更改的。
实体类VO,DTO,Entity,Command,Model这种实体类来讲,一般这种实体类我们都用lombok的注解get,set,还有constract构造器等注解,但是这个工具只能生成这些实体类的构造器的单元测试,无法生成get set方法的单元测试,所以写了个base方法,实体类继承一下。
package com.oazy.entity.modle; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.junit.MockitoJUnitRunner; import org.springframework.boot.test.context.SpringBootTest; import java.beans.IntrospectionException; import java.beans.PropertyDescriptor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; @SpringBootTest @RunWith(MockitoJUnitRunner.class) public abstract class BaseVoEntityTest{ protected abstract T getT(); private void testGetAndSet() throws IllegalAccessException, InstantiationException, IntrospectionException, InvocationTargetException { T t = getT(); Class modelClass = t.getClass(); Object obj = modelClass.newInstance(); Field[] fields = modelClass.getDeclaredFields(); for (Field f : fields) { boolean isStatic = Modifier.isStatic(f.getModifiers()); // 过滤字段 if (f.getName().equals("isSerialVersionUID") || f.getName().equals("serialVersionUID") || isStatic || f.getGenericType().toString().equals("boolean") || f.isSynthetic()) { continue; } PropertyDescriptor pd = new PropertyDescriptor(f.getName(), modelClass); Method get = pd.getReadMethod(); Method set = pd.getWriteMethod(); set.invoke(obj, get.invoke(obj)); } } @Test public void getAndSetTest() throws InvocationTargetException, IntrospectionException, InstantiationException, IllegalAccessException { this.testGetAndSet(); } }
在实体类上通过Squaretest生成单元测试,然后继承我上面写的那个BaseVoEntityTest类 。
TestMe插件(免费)TestMe插件可以智能分析被测试类的依赖类,结合Mockito+Junit等单元测试框架,生成Mock/InjectMocks依赖关系,自动生成单元测试类。
下载插件1. File——>Settings——>Plugins,搜索TestMe,然后install就好了,插件安装完成后需要重启一下。
2. 我们打开一个类,这个类就是我们即将要作为实验的类。光标定位到代码里,右击鼠标选择Generate…选择TestMe...后弹出Test Class,我选择的是Junit4。
3. 生成单元测试类,需要进行简单修改



