IDEA - 自动生成单元测试的插件

本文介绍了如何使用Squaretest和TestMe这两个插件来为Java项目自动生成单元测试代码。Squaretest适用于生成public方法的测试,而TestMe能够智能分析依赖并创建测试类。虽然生成的测试代码需要根据实际业务进行调整,但这两个工具显著提高了编写单元测试的效率。
摘要由CSDN通过智能技术生成

Squaretest插件(收费)

下载插件

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

TestMe插件(免费)

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

下载插件

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

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

 

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

可以使用Fast Coding插件来生成JavaBean。该插件可以帮助你快速生成Getter和Setter方法以及toString方法。你可以在插件的官网上下载插件源码和使用示例。\[1\]使用该插件生成Getter和Setter方法的示例代码如下: ```java public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } // 其他属性的Getter和Setter方法省略... ``` 使用该插件生成toString方法的示例代码如下: ```java @Override public String toString() { return "User{" + "username='" + username + '\'' + ", password='" + password + '\'' + // 其他属性的toString拼接省略... '}'; } ``` 你也可以使用插件-1s生成标准JavaBean来快速生成JavaBean。\[3\]这个插件可以帮助你一键生成标准的JavaBean类。 #### 引用[.reference_title] - *1* [【idea插件JavaBean(支持泛型)转JSON、生成调用getter代码](https://blog.csdn.net/justry_deng/article/details/122482164)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [JavaSE学习之路:Idea小技巧一键生成标准JavaBean(一键生成构造方法和Setter和Getter方法)](https://blog.csdn.net/shiqing4387/article/details/127705734)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值