Skip to content

a252937166/help-test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

codecov Build Status GitHub license GitHub stars GitHub forks

框架初衷

在编写自己模块的单元测试的时候,依赖了其他模块的service或者其他bean,这时需要做mock,但是mockito或者powermockito对于我的需求来说又过于臃肿,而且我也不需要太过复杂的mock语法,所以就撸了这个小框架,只需要写一个Mock类来代替需要的bean就好了。

用法

详细用法可以查看github上的测试用例

maven

当前版本: 1.0.2

<!-- https://mvnrepository.com/artifact/com.ouyanglol/spring-help-mock-starter -->
<dependency>
    <groupId>com.ouyanglol</groupId>
    <artifactId>spring-help-mock-starter</artifactId>
    <version>1.0.2</version>
</dependency>

配置文件

mock.help.packageRoot=com.xxx.xxx

mock.help.packageRoot配置当前所有测试代码的包路径,虽然不是必须的,当时建议配置,不然会扫描所有包下的文件(包括其他maven的包),非常耗时。mock.help.packageRoot也不用太过精确,一般建议配置项目启动类的包路径就行了。

@EnableMock

在启动类,或者Config类上加上@EnableMock表示启用mock类,不然mock不会生效。

Mock类

mock的原理,是在spring容器,注入bean的时候,用另外一个实例代替它。那么Mock类也不能是任意的class。原则上需要是原本bean的子类或者和bean实现的同一个接口。

比如原本的bean:

@Slf4j
@Service
public class TestServiceImpl implements TestService {
    @Override
    public void test() {
        log.info("test");
    }
}

mock类:

@Slf4j
public class TestServiceMock implements TestService {
    @Override
    public void test() {
        log.info("test Mock");
    }

}

使用mock

在正常逻辑的代码之上,只需要加个注解就行了:

@HelpMockBean(beanClass = TestServiceMock.class)
private TestService mock;

beanClass代表你使用的mock类,TestService就是需要被mock的bean。就这么简单,一看就懂了。

About

单元测试中,用mock某些bean

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages