由于Google Test网页基本上没有文档 - 我该怎么做?我到目前为止做了什么:
./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*)'
现在我忘记了做什么?
我正在尝试在Emacs 24.3中设置CEDET 2.2来为我提供自动完成功能,使用"对cedet的温和介绍",但它并不完全想按照我想要的方式工作.
首先,我尝试使用CEDET自己的完成,但是那个没有提供"弹出菜单",只有它能找到的第一个完成,并且没有办法循环.然后我安装了自动完成包,并按照页面上的描述进行设置.这也行不通 - 自动完成崩溃说auto-complete error: (void-variable ac-source-semantic).ac-source-gtags也是如此.
这是不可能的,因为目前有缺陷的CEDET,还是我错误配置了它?
我想从 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)
如何设置该属性?
我想使用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循环失败?
我有以下课程:
// 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++ ×2
cedet ×1
clojure ×1
emacs ×1
emacs-ecb ×1
emacs24 ×1
g++ ×1
googlemock ×1
googletest ×1
makefile ×1