C#单元测试moq框架的mock如何模拟静态方法和私有方法? 5C

MSTest:C#单元测试moq框架的mock如何模拟静态方法和私有方法?

1

2个回答

mock是基于接口的,私有方法并不在其测试用途之列。本身就没法在接口里面定义出私有方法。
如果非要模拟,作为变通,可以采用桥接设计模式,在类里面定义内嵌类(以获得友元类的效果,C#本身不支持友元类),然后调用私有方法或者静态方法,再暴露成共有方法。
你的moq框架去mock这个内嵌类型。

0

使用映射获取私有对象和静态对象,然后用SetValue设置

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
利用PowerMock模拟静态方法和私有方法的示例
本示例程序利用PowerMock演示了如何对静态方法和私有方法进行单元测试(其它模拟单元测试技术无法实现)。
单元测试 mock静态方法
@RunWith(PowerMockRunner.class)@PrepareForTest({LabelLibService.class}) public class LabelLibServiceTest {    @InjectMocks    private LabelLibService         labelLibService;    @Mock    private Label...
使用JUnit写UT时mock私有方法和属性
一、mock私有方法 1、mock某个类的私有方法 2、mock某个对象的私有方法   二、mock私有属性 1、mock某个对象的私有属性
PHPUnit单元测试对桩件(stub)和仿件对象(Mock)的理解
一、桩件(stub)和仿件对象(Mock)概念 桩件(stub): 将对象替换为(可选地)返回配置好的返回值的测试替身的实践方法称为上桩(stubbing)。可以用桩件(stub)来“替换掉被测系统所依赖的实际组件,这样测试就有了对被测系统的间接输入的控制点。这使得测试能强制安排被测系统的执行路径,否则被测系统可能无法执行”。 仿件对象(Mock): 将对象替换为能验证预期行为(例
java中一种测试私有方法的方法(非PowerMock)
单元测试时,有时需要对私有方法进行测试。但是,此时会遇到个问题,私有方法仅能被本类中的其他方法引用,对其他类则不可见。 今天记录一下自己学到的一种设置私有方法可用的技巧,反射。另外多说一句,还有一种途径时通过PowerMock的方式设置私有方法可用,这里先不做介绍。 例如,有如下一个类中的私有方法 public class MakePrivateMethodAccessabel { pr
【单元测试】使用PowerMock框架进行Java静态方法的单元测试
简介 一般来说,Java中的静态方法无法用传统的Jmock进行单测,这也就给研发人员和测试人员造成了一定的困扰。本文介绍一种使用PowerMock执行静态方法单元测试的手段,其实网上也有使用如Mockito的方法,大家可以自行搜索。 静态方法的测试手段 其实从一个测试人员的角度看,静态方法的测试并不比非静态方法难,比如下面这个例子: public final class Strin...
PHPUnit测试私有属性和方法
一、测试类中的私有方法:class Sample { private $a = 0; private function run() { echo $a; } } 上面只是简单的写了一个类包含,一个私有变量和一个私有方法。对于protected和private方法,由于无法像是用public方法一样直接调用,所以在使用phpunit进行单测的时候,多有
(工作笔记)jmockit的使用-mock私有变量、静态变量、代码块
这里写自定义目录标题一、jmockit配置二、实例2.1 被测对象2.2 测试类 一、jmockit配置 变量 <properties> <jmockit.version>1.43</jmockit.version> &
单元测试时测试一个private私有方法
单元测试时测试一个private私有方法时,我们第一想法可能是用java反射机制。 [code="java"] ... Method method = clazz.getDeclaredMethod(methodName, classes) method.setAccessible(true); method.invoke(obj, objects) [/code] Spr...
Android单元测试 mock Context,mock静态类的静态方法,测试方法的顺序
mock Context 我们写单元测试时,经常会用到context对象,但是直接使用context经常报空指针异常 正确的mock方式如下 1.添加变量 @Mock private Context mockApplicationContext; 2.在setUp方法中初始化 @Before public void setUp() throws Exception { MockitoAn...
Mockito + Testng编写单元测试的工具类
/** 1. 将本util类源码加到主项目的src/test/java/目录下 2. 修改代码中的path参数, String path = "D:/workspace/xxxx-util";//项目根目录 3. 启动main方法,自动生成项目中所有需要进行单元测试的java文件。 下面为单元测试源代码 */ /** * maven 依赖 * <!-- testn...
单元测试--测试类的私有方法--反射
package com.paic.claimppt.common.biz.service.impl; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import org.springframework.beans.factory.annotation
单元测试--MOCK静态方法
@RunWith(PowerMockRunner.class) @PrepareForTest(PropertiesLoaderUtils.class) public class SupplierVCCServiceTest { private SupplierVCCAuthAndCaptureService vccAuthAndCaptureService = createMock(
如何用PowerMock进行Spy一个抽象类
最近看到了PowerMock,想用使用Mockito方法的地方改使用PowerMock的方法。以为把Import改了应该就没问题了,但在Spy抽象类时出了问题。 Mockito代码:   AbstractProxy abstractProxy = spy(AbstractProxy.class); 在换成Powermock的spy方法后报错了,原因是Powermock的spy方法是voi
Powermock私有方法
简单笔记下,如有以下待测方法callSumXX,其调用了private方法sumXX 可以直接mock掉callSumXX,传送门:Mockito在Maven junit测试中的应用 如果方法中还有其他待测逻辑等原因不能直接mock掉的话,这里就需要去mock被调用的private方法。 public class Calculator { private int sumXX(int
单元测试——使用Mock
一、Mock简介 背景:小明和小刚要为app制作一个登陆功能,小明负责网络交互获取服务器的认证数据,小刚负责将获取到的数据写入到数据库中,然后能够使用户自动登陆。小刚的开发的速度比较快,已经完成了数据库互这一块,但是小名明的网络交互还没有开发完成。那么小刚怎么测试自己的数据库是否完成呢?小刚就要自己创建一个类,模拟登陆,然后进行测试。 首先创建User类 public class User
对私有方法进行单元测试
为了提升代码质量,减少缺陷,方便以后修改代码,除了对类中public方法编写单元测试案例以外,最好对私有方法也编写测试案例。方法也简单,利用java的反射,获得私有方法的Method对象,然后直接调用即可。 获得私有方法的Method对象的方法如下: /** * 测试私有方法时使用,将类的私有方法转换成可访问的方法。 * @param clazz 类的类型,不能为空 * ...
使用mockito框架来测试私有方法
这里举一个稍微复杂一点的例子 前段时间在看mybatis3.5.1的源码,源码本身所带的单元测试用到了mockito框架 一、问题说明 我看到MapperMethod类中有个方法叫convertToArray(私有方法),想要断点调试下运行过程,但是我不想改源码;另外我也想顺便多用用mockito框架 看到这个方法, 1. 我会想到需要传递一个list。这个好办 2. 该方法...
Junit4 单元测试 private 私有方法 abstract类
一句话说明单元测试的意义: 显著提高从上到下结构项目的可维护性和健壮性, 保证多个类之间的依赖关系正确. private方法的单元测试, abstract类的单元测试是两个难点, 本文给出了解决方案.
PowerMock中@mock和@spy在mock私有方法的区别,使用@spy模拟私有方法进行测试时sonar统计是有覆盖率的
1. 问题描述  PowerMock使用@spy进行模拟私有方法返回值进行测试时,私有方法中的代码总是会被执行 (如果私有方法中依赖环境等因素,测试则难以进行) 例如如下代码段,需要测试callSumXX方法,同时想要模拟私有方法sumXX的返回值 public class Calculator { private int sumXX(int a, int b) { ...
关于是否对static方法与mock测试的几篇文章
Mocking static methods: the road to Hell... http://www.giorgiosironi.com/2009/11/mocking-static-methods-road-to-hell.html   Static Methods are Death to Testability http://googletesting.blogspot.co...
利用Mockito进行mock方法时有无返回值的处理
一.首先引入mockito-all的jar包       1.    当mock一个对象,且执行此对象中的方法有返回值时,使用下面的方法: import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; 对象= mock (类名.class); when (对象.方法 (参数)).the
Android单元测试(三):PowerMock框架的使用
之前的两篇文章分别说到了 JUnit 与 Mockito ,一个主要用于断言,一个用于模拟我们的非测试类。今天说一说PowerMock ,它拓展了Mockito框架,从而支持了mock static方法、private方法、final方法与类等等。(这里八卦一下,为什么 Mockito 不自己支持 private 方法?有兴趣的自行查看原因) 1.PowerMock选择 PowerMoc
Spring测试静态方法打桩-PowerMockito及SpringBootTest结合使用
Mockito无法对静态方法进行Mock,如果需要Mock静态方法,需要使用到PowerMockito。 1. Maven依赖 <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-api-mockito</artifactId>...
使用PowerMockito对私有private方法及异常进行测试
注意不是mock私有方法 假如对下面的代码进行测试: public class Service { private int getBackupSize(String backupId, String keycloakToken) { //some code...... try { backup = os.blockStorage().backups()...
单元测试-JMockit中使用参数化(多参数)测试
jMockit的mocked中引入参数化(多参数)测试
mockito测试抽象类方法
    当测试一个抽象类的方法时,因为不能直接new出来这个调用的对象,我们可以使用Mockito.mock(My.class, Mockito.CALLS_REAL_METHODS),然后就可以调用被测试的方法。 private void givenAbstractStoryURLHandler() { abstractStoryURLHandler = Mocki...
如何给一个私有方法做单元测试
如何给一个私有方法做单元测试
一.Android单元测试 Mockito的简单用法
二.Android单元测试 Mockito的更多用法(1) 三.Android单元测试 PowerMock给私有变量赋值 四.Android单元测试 PowerMock mock静态方法基于以下开源框架 1.Mockito 2.PowerMock 本篇文章主要讲Android开发时,如何使用以上开源框架来进行单元测试。正文: 创建一个工程,引入一下dependencytestCompile
【JavaScript UT测试--01】--js单元测试之mock当前文件函数不起作用
在做nodejs后端开发中,不得不面对的一个问题是写单元测试(UT)。那么你也可能遇到下面的问题。 当你mock某个文件里面的函数,但是该文件里面其他用到该函数的方法没有进到你mock的方法里去。 案例分析: 代码 有如下方法需要写单元测试, 存放在文件名为radioStateHelper.js里。 // radioStateHelper.js // 待测函数 funct...
Mockito单元测试—verify
1、校验方法是否调用Mockito提供vertify关键字来实现校验方法是否被调用,具体调用如下例子:@Test public void update() throws Exception { boolean result = personService.update(1, "new name"); //验证mockDao的getPer是否被调用 ...
Jmockit对类静态方法mock
Jmockit对类静态方法mock首先要明确一点,一个类型被注释为@Mocked后,其所有方法包括静态方法都将处于mocked状态类MethodClass包含一个静态方法与public方法public class MethodClass { public static String publicStaticMethod() { return "Original pub
java反射运用举例-junit测试私有方法
记得以前刚接触junit那会,对于公有方法的测试运用的很是流畅,并且私有方法也是在这些公有方法中调用,都会测试覆盖到。 由于是新建的类,新建的方法,造数据一步一步的覆盖跑下去,确实只要有耐心,都可以搞定。 但是随着项目的逐渐深入,由于人员成本,时间成本等等问题,测试类的维护不知道从哪一个版本, 哪一位开发人员修改了业务逻辑开始,已经问题百出,一线飘红了,但是项目一直跑
PowerMock私有方法的简单尝试
公司的代码都要设计到代码测试的覆盖率的问题,简单的测试工作还是可以的但是在处理私有方法的时候以前的都是直接测到方法内存,凭空多出了好多代码量。 这里找到了一中比较巧妙的方法感觉还不错。 代码如下: package powermock; import java.util.Random; public class CodeWithPrivateMethod { public vo...
单元测试学习: mock有复杂行为的接口
一, 问题       gmock 提供了EXPECT_CALL的WillOnce 和WillRepeatedly方法来模拟返回值比较简单的情况(可以参考http://www.cppblog.com/woaidongmao/archive/2009/05/02/81669.html),  但是有时需要模拟更复杂的行为. 例如需要 "返回一个有序数列中大于某个值的最小数", 即stl中的l
Java+SpringBoot单元测试,利用反射测试私有方法
#在sringBoot方法中测试私有方法需要利用反射 import com.sun.tools.javah.Gen; import java.io.BufferedOutputStream; import java.lang.reflect.Method; class Game { Game(int i) { System.out.print("Game construc...
使用PowerMock模拟私有字段和私有方法
要模拟的类:public class PrivateObject { private String privateString; public PrivateObject(String privateString) { this.privateString = privateString; } private String getPrivateString() { re
.Net单元测试Mocking框架 Moq 官方帮助文档 chm
Moq是利用诸如Linq表达式树和Lambda表达式等.NET 3.5的特性,为.NET设计和开发的Mocking库。它的目标是让Mocking以一种自然的方式与现有单元测试进行集成,使它更加简单、直观,以避免开发人员被迫重写测试或学习需要大量录制/播放的Mock框架。Moq的目标就是为了帮助那些编写测试代码,但却不使用Mocking框架的开发人员。Moq的设计原则就是以极低的门槛来获取良好的重构能力。
java私有静态方法
一、private static            我们都知道想要保护一些数据,只要设置为private,并且在java中static多少有“共享”的意味存在,那么既然已经private了,为什么还要static?        编译器对标记为静态的函数无需检测this指针是否为空,有时候这样的检测会对性能敏感的应用产生影响。说的比较笼统,其实原因是对非静态函数来说,都会默认传递第一个thi...
PowerMock单元测试
PowerMock主要就是模拟对象,并得到你想要的结果 pom.xml增加相关依赖 [code="xml"] junit junit test org.powermock powermock-module-junit4 1.4.10 test org.powermock powermock-api-mockito 1.4.1...
相关热词 c#串口测试应用程序 c# 匹配 正则表达式 c#防止窗体重绘 c#读写txt文件 c#挖地雷源代码 c#弹框选项 c# 移除 队列 c# 密码写入配置文件 c# 获取可用内存大小 c# 嵌入excel编辑