点击关注公众号,利用碎片时间学习

Squaretest插件(收费)

下载插件

1.File——>Settings——>Plugins,搜索Squaretest,然后install就好了,插件安装完成后需要重启一下。

9c7a5958cc549987ad882876628fa9cb.png

2.重启之后,菜单栏就多了一项Squaretest ,点击Squaretest 后,菜单的最后一项:Generate Test Methods(Help)来看它的一个演示。

6b17b6813cd5cd1ab09da2f043bcc8e0.png

演示

首先:我们打开一个类,这个类就是我们即将要作为实验的类。Squaretest生成的单元测试方法都是只能生成public的。

其次:光标定位到代码里,右击鼠标选择Generate…

7f46cf5e4bd61bc8a3ddff773a7935ec.png

会出现Generate TestGenerate Test - confirm Mocks 两个选项,第一次的话选择第二个选项。

664e3b4227a391292691b7f4fe1f5d80.png

选择第二个后,则需要你选择一下单元测试的模板,我选择的是JUnit4MockitoSpring.java.ft,也可以选择别的。【快捷键:Alt+M】

b7256032affb7df83b79e11efbb0f7fe.png

选择玩模板后,弹出Select Dependencies to Mock 选择要模拟的依赖项,然后点击OK,则生成了EvaluateWeightServiceImplTest测试类。

73fa9606494b216f0b582edc21cce1df.png4c0e0c08b93623fabd0e2a45c1a51559.png

注意:自动生成单元测试,还是需要我们手动进行修改补充的,针对项目业务需求进行更改的。

实体类

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<T> {
    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类 。

744965a31202506a568d5118ef085f89.png

TestMe插件(免费)

TestMe插件可以智能分析被测试类的依赖类,结合Mockito+Junit等单元测试框架,生成Mock/InjectMocks依赖关系,自动生成单元测试类。

下载插件

1.File——>Settings——>Plugins,搜索TestMe,然后install就好了,插件安装完成后需要重启一下。

d37a9864cafb585ae974a5f6fc6afb82.png

2.我们打开一个类,这个类就是我们即将要作为实验的类。光标定位到代码里,右击鼠标选择Generate…选择TestMe...后弹出Test Class,我选择的是Junit4。

26097a26de30995ed2810e6566c4dc94.png

3.生成单元测试类,需要进行简单修改

c15ccf8eb7ffd7672eacdda193283c4a.png

感谢阅读,希望对你有所帮助 :) 

来源:blog.csdn.net/qq_38795959/article/

details/124727476

推荐:

最全的java面试题库


PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我们吧!
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐