当前位置: 首页 > news >正文

网站首页优化安徽网站推广公司

网站首页优化,安徽网站推广公司,网页模板网站有那些,做网站设计师能10年赚100万吗Jmockit使用笔记_基本功能使用Tested_Injectable_Mocked_Expectations_jmockit.class-CSDN博客 静态变量直接赋值就好,没必要mock了 测试框架Jmockit集合junit使用 RunWith(JMockit.class) 写在测试案例类上的注解 Tested 在测试案例中,写在我们要测试的类上…

Jmockit使用笔记_基本功能使用@Tested_@Injectable_@Mocked_Expectations_jmockit.class-CSDN博客

静态变量直接赋值就好,没必要mock了 

测试框架Jmockit集合junit使用

@RunWith(JMockit.class)

在测试案例类上的注解

@Tested

在测试案例中,写在我们要测试的类上面, 一般用实现类

@Injectable

在测试案例中声明那些我们要测试的类中通过@Autowired注入的类
                        
原文链接:https://blog.csdn.net/Java_XiaoBei/article/details/126150129

/*** @author: xinruoxiangyang9010* 测试案例*/
@RunWith(JMockit.class)
public class MyServicemplTest {@Injectableprivate MyMapper myMapper;@Testedprivate MyServicempl myServicempl;@Testpublic void testMethod() {String result = myServicempl.testMethod();assertEquals("myService", result);}
}

2. 必须加 @RunWith(JMockit.class) 的情况

  • 使用 JUnit 4
    如果你的项目是基于 JUnit 4 的测试框架,而测试类中使用了 JMockit 提供的注解(如 @Mocked@Injectable)或 API(如 ExpectationsVerifications),则必须加上 @RunWith(JMockit.class)
    原因
    JUnit 4 默认使用 BlockJUnit4ClassRunner 运行器,而 JMockit 的特性需要通过 JMockitTestRunner 扩展运行器支持。如果不加 @RunWith(JMockit.class),JMockit 的增强功能不会生效。

测试类中不使用 JMockit 特性
如果你的测试没有使用 JMockit 的 @Mocked@Injectable@Tested 或其他功能,只是普通的单元测试,则可以不加 @RunWith(JMockit.class)。 

Expectations:返回他的result 

在 JMockit 的 Expectations 中,如果没有为方法设置返回值(result),或将 result 设置为 null,则会根据方法的签名返回以下内容:


1. 没有指定 result 的情况

new Expectations(MyStringUtil.class) {{MyStringUtil.getUUID(); // 没有设置 result
}};
String resultString = MyStringUtil.getUUID();
assertEquals(null, resultString); // 返回 null

  • 如果没有显式设置 result默认行为是方法返回类型的默认值
    • 基本类型(如 intdouble):返回其默认值(00.0)。
    • 对象类型:返回 null
    • void 方法:不会有返回值。

------------------

  • 如果是void 方法不能设置 result 值,因为它不返回任何内容。
  • 如果你尝试为 void 方法设置 result,JMockit 会抛出异常。java.lang.IllegalArgumentException: Attempted to specify a result for a void method.
  • 对于 void 方法,你可以使用 Verifications 来验证方法的调用行为。
@Test
public void voidMethodTest() {new Expectations() {{// 模拟任何期望,但不设置返回值MyStringUtil.doSomething();}};// 调用 void 方法MyStringUtil.doSomething();// 验证 void 方法是否被调用new Verifications() {{MyStringUtil.doSomething();  // 验证是否调用times = 1;  // 验证调用次数}};
}

这段代码就是检查doSomething()是否调用了1次,times=2就是检查是否用了两次

下面这段代码太好了:

结合Expectations的使用对@Mocked与@Injectable的不同

/*** @author: xinruoxiangyang9010* 测试案例*/
@RunWith(JMockit.class)
public class MockAndInjectTest {@Testpublic void testMock(@Mocked DiffServiceImpl diffService) {new Expectations() {{diffService.method();result = "mockMethod";}};assertEquals("mockMethod", diffService.method());// @Mocked修饰的变量,即便是再new出来的,也会按照上面我们mock的结果返回assertEquals("mockMethod", new DiffServiceImpl().method());}@Testpublic void testInjectable (@Injectable DiffServiceImpl diffService) {new Expectations() {{diffService.method();result = "mockMethod";}};assertEquals("mockMethod", diffService.method());// 注意这里结果的不同, 在对@Injectable修饰的对象进行Expectations指定结果时// 受影响的只是被修饰的对象,如果我们new一个示例出来,是不会受Expectations影响的assertEquals("real", new DiffServiceImpl().method());}
}

这里写的也很好 

JMockit单元测试详解-CSDN博客

基本流程

record(录制)---- replay(回放) ---- verify(验证)

record : 设置将要被调用的方法和返回值。

  • Expections中的方法至少被调用一次,否则会出现missing invocation错误。调用次数和调用顺序不限。
  • StrictExpectations中方法调用的次数和顺序都必须严格执行。如果出现了在StrictExpectations中没有声明的方法,会出现unexpected invocation错误。

replay:调用(未被)录制的方法,被录制的方法调用会被JMockit拦截并重定向到record阶段设定的行为。

verify:基于行为的验证,测试CUT是否正确调用了依赖类,包括:调用了哪些方法;通过怎样的参数;调用了多少次;调用的相对顺序(VerificationsInOrder)等。可以使用times,minTimes,maxTimes来验证。

 

RunWith(JMockit.class): 指定单元测试的执行类为JMockit.class。
Tested: 指定被测试类,同时mock实例并注入测试类;依赖的类使用Injectable注入。
Injectable: 将对象进行mock并注入测试类。
Mocked:mock一种类型,并注入测试类。

Mocked与Injectable区别:

  • Mocked 注入的依赖,类的所有实例都被mock,record的方法,在replay时,按照record的结果返回;没有record的方法返回默认值。
  • Injectable 注入的依赖,只mock指定的实例,record的方法,在replay时,按照record的结果返回;没有record的方法返回默认值。没有mock的实例,调用其原始方法。

 

http://www.ds6.com.cn/news/25035.html

相关文章:

  • 网站智能建设系统源码产品宣传推广方案
  • 兰州市做网站建设的公司域名站长工具
  • 分分作网站模板建站和开发网站区别
  • 网页设计与网站建设在线测试答案百度关键词价格查询
  • wordpress yeti泰州百度seo公司
  • 网站图片加载 优化百度问答官网
  • 黄埔企业网站建设上海seo网站优化软件
  • 投资公司注册需要多少注册资金键词优化排名
  • 烟台房地产网站建设网站关键词优化应该怎么做
  • 沧州网站的公众号怎么发外链
  • 何做百度推广网站企业网站大全
  • k2搭建wordpressseo网站优化方案摘要
  • 中国房地产排名100强百度seo推广怎么做
  • 网站如何知道是谁做的呢某产品网络营销推广方案
  • 浦项建设内部网站成免费的crm
  • 用php做的网站怎么上传推广方案流程
  • 网站备案正常多久论文收录网站有哪些
  • 湛江网站建设咨询百度站长工具添加不了站点
  • 网站企业备案代理免费推广软件 推广帮手
  • 做企业网站服务器株洲seo排名
  • 用jsp做网站的体会国外网站加速
  • 做卫浴软管的网站武汉疫情最新情况
  • 合肥网站建设政务区百度浏览器网页版入口
  • 做教育培训的网站五种关键词优化工具
  • 带音乐网站模板全网推广网站
  • b站推广网站nba智库每天看七个广告赚40元的app
  • php搭建网站后台查看域名每日ip访问量
  • 如何做可以微信转发的网站乔拓云网站注册
  • 如何在百度做自己公司的网站乌鲁木齐seo
  • 哪个网站做高仿衣服批发太原seo招聘