小编Qua*_*rra的帖子

TEST、TEST_F 和 TEST_P 之间有什么区别?

我对 gtest/gmock 进行了很多研究,但没有一个给我正确的答案。我是 C++ 新手,所以任何帮助都将不胜感激。

googletest googlemock

29
推荐指数
2
解决办法
3万
查看次数

'R无法解析为变量' - gen文件夹为空

我有一个错误:

R cannot be resolved to a variable
Run Code Online (Sandbox Code Playgroud)

排队:

setContentView(R.layout.main);
Run Code Online (Sandbox Code Playgroud)

但我不能解决它做其他用户写的东西应该尝试,这是:

  1. 摆脱'import android.R'行.
  2. 清理项目,然后再次构建它.
  3. 关闭项目然后再次打开它.
  4. 转到项目属性> Java构建路径>勾选Android版本复选框
  5. 按照以下步骤:取消选中Project-> Build Automatically Project-> Properties-> Builders:确保检查所有Android(3)和Java(1)构建器(仅此而已)Window-> Preferences-> Android-> Build:Check "在构建时自动刷新资源和资产文件夹"右键单击项目 - > Android工具 - >修复项目设置(不确定它实际上做了什么,但它不会受到伤害)
  6. 一些用户建议检查.xml文件是否正确.我不知道怎么能这样做.我必须承认我是java和android编程的新手,我甚至没有在我的项目中写过一行 - 代码是自动生成的.
  7. 布局xml文件使用小写字母命名.
  8. 资源文件中没有错误(没有红叉).

layout main.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助!

eclipse android

12
推荐指数
2
解决办法
1万
查看次数

使用unique_ptr进行依赖注入以进行模拟

我有一个使用类Bar的类Foo.Bar仅在Foo中使用,而Foo正在管理Bar,因此我使用unique_ptr(不是引用,因为我不需要Foo之外的Bar):

using namespace std;
struct IBar {
    virtual ~IBar() = default;  
    virtual void DoSth() = 0;
};

struct Bar : public IBar {
    void DoSth() override { cout <<"Bar is doing sth" << endl;};    
};

struct Foo {
  Foo(unique_ptr<IBar> bar) : bar_(std::move(bar)) {}

  void DoIt() {
    bar_->DoSth();
  }
private:
  unique_ptr<IBar> bar_;
};
Run Code Online (Sandbox Code Playgroud)

到目前为止一切顺利,这很好.但是,当我想对代码进行单元测试时,我遇到了问题:

namespace {
struct BarMock : public IBar {
  MOCK_METHOD0(DoSth, void());
};
}

struct FooTest : public Test {
  FooTest() : barMock{ make_unique<BarMock>() }, out(std::move(barMock)) {}

  unique_ptr<BarMock> barMock; …
Run Code Online (Sandbox Code Playgroud)

c++ unit-testing dependency-injection gmock

8
推荐指数
1
解决办法
1857
查看次数

是否有一个有用的模式可以使用 gmock 对 grpc 服务器类进行单元测试?

有一个工具可以生成客户端存根的模拟版本,这非常有帮助。测试服务器端目前让我非常头痛。我已经够头痛了,我觉得我一定是做了一些根本性错误的事情。

我可能误读了以下内容,但端到端测试(包括“mock_test”)似乎正在使用实际的客户端-服务器连接来驱动测试。他们可能会模拟客户端,或者模拟客户端读取器/写入器以查看服务器的响应,但我不清楚如何单独测试服务器。

我想要做的事情:我有一些继承自 gRPC 生成的类“Service”的服务实现。假设服务公开了一个接口,::grpc::Status Foo(::grpc::ServerContext* context, const CommandMessage* request, ::grpc::ServerWriter<CommandResponse>* writer);我编写单元测试的直觉是传递一个模拟“ServerWriter”类,并期望在适当的时候调用“Write”。但 ServerWriter 被标记为最终的并且不能被覆盖。

这并不是我第一次在我的标准模拟方法和 gRPC 服务器内容方面遇到麻烦。我已经包装了 Server 类、ServerBuilder 类等,以便我可以将它们的模拟版本放入测试中(以验证在构建服务器时是否将正确的参数传递给我的服务器,例如)

所以我想我错过了 grpc 的一些东西。我只是不知道是什么。我是否应该在单元测试中建立一个真实的服务器并使用模拟客户端对其进行探测?如果我必须使用测试配置来支持测试版本,如何验证是否通过了正确的服务器配置?该代码具有接口类和虚拟方法,但是似乎公开供公众使用的部分似乎并不像我期望的那样容易被模拟。

c++ unit-testing googletest googlemock grpc

6
推荐指数
0
解决办法
852
查看次数

如何使用 gmock 来模拟 std::function?

我的类的构造函数是

A( ...
   std::function<bool(const std::string&, const std::string&)> aCallBack, 
   ... );
Run Code Online (Sandbox Code Playgroud)

我想用 EXPECT_CALL 来测试它。这个回调来自另一个 B 类。我创建了一个 Mock 像

class BMock : public B
{
    MOCK_METHOD2( aCallBack, bool(const std::string&, const std::string&) );
}
Run Code Online (Sandbox Code Playgroud)

然后我试过了

B *b = new B();
std::function<bool(const std::string&, const std::string&)> func = 
    std::bind(&B::aCallBack, b, std::PlaceHolders::_1, std::PlaceHolders::_2);
Run Code Online (Sandbox Code Playgroud)

它仍然不起作用。如何获取 gmock 对象的函数指针?

谢谢!!

testing tdd unit-testing googletest googlemock

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

为什么 MOCK_METHOD 语法在 GMock 中不起作用?

我什至还没有开始测试,即使我正确地遵循了 GMock 的文档,我也遇到了 GMock 的 MOCK_METHOD 宏的一些语法问题。会不会是编译器的问题?我有:

MingGW (GCC 4.9.2)

谷歌测试 1.10.x

class SimpleClass {

public:
    virtual int simpleFirstFunction(int a, int b) { return (a + simpleSecondFunction(b)); }
    virtual int simpleSecondFunction(int b) { return (2 * b); }
    virtual ~SimpleClass();
};


class MockSimpleClass :public SimpleClass {
    MOCK_METHOD(int, simpleSecondFunction, (int a, int b), (override));
};
Run Code Online (Sandbox Code Playgroud)

我看到 3 个编译器错误:

错误 1:关于函数名

MockSimpleClass.cpp:18:24: 错误:

'simpleSecondFunction' 不是一个类型 MOCK_METHOD(int, simpleSecondFunction(int a, int b), (override));

错误 2:关于输入参数

MockSimpleClass.cpp:18:46: 错误:

'(' token MOCK_METHOD(int, simpleSecondFunction, (int a, int …

c++ googlemock

5
推荐指数
2
解决办法
7768
查看次数