小编Dan*_*ner的帖子

如何使用GNU Make项目设置Google Test?

由于Google Test网页基本上没有文档 - 我该怎么做?我到目前为止做了什么:

  • 我从项目页面下载了googletest 1.6并在./configure && make里面做了一个
  • 我添加-Igtest/include -Lgtest/lib到我的编译器/链接器标志
  • 我写了一个小样本测试:

    #include "gtest/gtest.h"
    
    int main(int argc, char **args)
    {
      return 0;
    }
    
    TEST(someTest,testOne)
    {
      ASSERT_EQ(5,5);
    }
    
    Run Code Online (Sandbox Code Playgroud)

    这编译很好,但链接器似乎根本没有被逗乐.我收到了大量的错误信息

    test/main.o:在函数test someTest_testOne_Test::TestBody()': main.cpp:(.text+0x96): undefined reference to:: internal :: AssertHelper :: AssertHelper(testing :: TestPartResult :: Type,char const*,int,char const*)'

现在我忘记了做什么?

c++ makefile g++ googletest

7
推荐指数
2
解决办法
5899
查看次数

CEDET中的自动完成?

我正在尝试在Emacs 24.3中设置CEDET 2.2来为我提供自动完成功能,使用"对cedet的温和介绍",但它并不完全想按照我想要的方式工作.

首先,我尝试使用CEDET自己的完成,但是那个没有提供"弹出菜单",只有它能找到的第一个完成,并且没有办法循环.然后我安装了自动完成包,并按照页面上的描述进行设置.这也行不通 - 自动完成崩溃说auto-complete error: (void-variable ac-source-semantic).ac-source-gtags也是如此.

这是不可能的,因为目前有缺陷的CEDET,还是我错误配置了它?

emacs cedet emacs-ecb emacs24

6
推荐指数
1
解决办法
2471
查看次数

如何在 Clojurescript 中设置嵌套属性值?

我想从 clojurescript 设置 element.style.height 属性,但不幸的是这段代码失败了:

(set! (-> (sel1 tr :.ragslide) .-style .-height) (content-height))
Run Code Online (Sandbox Code Playgroud)

(sel1 选择一个 DOM 元素,它是来自 Dommy 库的宏)

出现以下错误:

clojure.lang.ExceptionInfo: 
Assert failed: Can't set! local var or non-mutable field
(or (nil? local) (and (:field local) (or (:mutable local) (:unsynchronized-mutable local) (:volatile-mutable local)))) at line 79  {:tag :cljs/analysis-error, :file nil, :line 79, :column 7}
Run Code Online (Sandbox Code Playgroud)

如何设置该属性?

clojurescript

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

"For"失败但"循环"有效

我想使用SQLKorma执行一些SQL语句.起初我写了以下代码:

(let [sqls (-> (slurp "resources/database.sql")
              (str/split #";")
              butlast)]
  (for [sql sqls]
      (k/exec-raw sql)))
Run Code Online (Sandbox Code Playgroud)

但由于原因不明,这不起作用.for循环完全被跳过.但这有效:

(let [sqls (-> (slurp "resources/database.sql")
              (str/split #";")
              butlast)]
  (loop [sqls sqls]
    (if (not (empty? sqls))
      (do
        (k/exec-raw (first sqls))
        (recur (rest sqls))))))
Run Code Online (Sandbox Code Playgroud)

为什么会这样?为什么for循环失败?

clojure

3
推荐指数
1
解决办法
96
查看次数

如何在没有实现的情况下测试纯虚拟类?

我有以下课程:

// IVirtualController.hpp
class IVirtualController
{
public:
  virtual InputCode validate(int keycode) = 0;
  virtual ~IVirtualController();
};
Run Code Online (Sandbox Code Playgroud)

现在我想模仿这个类:

// InputManagerTest.cpp
class MockController : public IVirtualController
{
public:
  MOCK_METHOD1(validate,InputCode(int keycode));
};
Run Code Online (Sandbox Code Playgroud)

但这不起作用!我收到以下错误:

test/input/InputManagerTest.o:在函数MockController::~MockController()': test/input/InputManagerTest.cpp:19: undefined reference toIVirtualController ::〜IVirtualController()'test/input/InputManagerTest.cpp:19:未定义引用`IVirtualController ::〜IVirtualController()'

test/input/InputManagerTest.o:在IVirtualController::IVirtualController()': test/input/../../src/input/IVirtualController.hpp:14: undefined reference toIVirtualController的函数vtable中

test/input/InputManagerTest.o:在函数MockController::MockController()': test/input/InputManagerTest.cpp:15: undefined reference toIVirtualController ::〜IVirtualController()'中

test/input/InputManagerTest.o :(.rodata._ZTI14MockController [_ZTI14MockController] + 0x10):未定义引用`typeinfo for IVirtualController'

搜索告诉我"未定义引用vtable/typeinfo"错误是由于缺少实现,虚拟方法声明后面缺少"= 0"或非虚拟析构函数.IVirtualController类没有实现,但是这应该不是问题,因为MockController正在实现它,对吧?注释掉整个InputManagerTest.cpp模拟文件"解决"了这个问题,即使在另一个类中使用了IVirtualController.

我该如何测试?

c++ googlemock

0
推荐指数
1
解决办法
909
查看次数