小编Man*_*yya的帖子

如何在谷歌模拟测试中将模拟方法的 void * 参数设置为值?

我想将字符串“设备名称”传递给void *方法的指针参数,然后将其检索到字符数组。

为此,我做了如下所示的操作。

在这里,我创建了一个动作来实现这一目标。

ACTION_P(SetArg2ToChar, value) {*static_cast<char*>(arg2) = *value; }
Run Code Online (Sandbox Code Playgroud)

要调用/模拟的实际方法

bool getDictItem(WORD wIndex, BYTE bSubIndex, void * pObjData, DWORD dwLength, CSdo& sdo)
Run Code Online (Sandbox Code Playgroud)

我的模拟方法

  MOCK_METHOD5(getDictItem,
  bool(WORD wIndex, BYTE bSubIndex, void * pObjData, DWORD dwLength, CSdo& sdo));
Run Code Online (Sandbox Code Playgroud)

在代码中它被称为

if( !can.getDictItem(wIndex, bSubIndex, pObjData, dwLength, tSdo) )
Run Code Online (Sandbox Code Playgroud)

我想将一个字符串传递给它pObjData(列表中的第三个参数)。

在我的谷歌测试中,我就是这样做的。

char szDeviceName[30]= {0};
snprintf(szDeviceName, sizeof(szDeviceName), "%s", "Device Name" );

EXPECT_CALL( mockCan, getDictItem(_,_,_,_,_) )
            .WillOnce(DoAll(SetArg2ToChar(szDeviceName),
            Return(true)))
            .RetiresOnSaturation();

/*    Call a real method within which this mock method is called */
Run Code Online (Sandbox Code Playgroud)

如果我尝试直接使用“SetArgPointee<2>”设置此参数(pObjData),则会收到以下错误。 …

c++ googlemock

5
推荐指数
1
解决办法
7179
查看次数

无论.Net Framework如何,我们如何从GAC访问二进制文件

最初,我们正在开发.Net Framework 3.5.因此,GAC路径在代码中被硬编码为

C:\Windows\assembly\GAC_64\{0}\1.0.0.0__008145f79b9aec14\{0}.dll
Run Code Online (Sandbox Code Playgroud)

后来我们迁移到.Net Framework 4.0.现在应该是必需的路径

C:\Windows\Microsoft.NET\assembly\GAC_64\{0}\v4.0_1.0.0.0__008145f79b9aec14\{0}.dll
Run Code Online (Sandbox Code Playgroud)

目前可以通过将第二个路径放在我的代码中来解决问题.但是当微软发布下一套框架时,它可能会失败.

所以我想知道是否有任何方法可以独立于.Net Framework访问GAC二进制文件.

对此有任何意见都会有所帮助.谢谢

.net c# gac

-1
推荐指数
1
解决办法
291
查看次数

标签 统计

.net ×1

c# ×1

c++ ×1

gac ×1

googlemock ×1