标签: unittest++

如何使用UnitTest ++从测试中访问私有类字段?

在使用UnitTest ++对单元测试进行编码时,我正面临着麻烦.我想知道如何以干净的方式(或者任何方式......)访问私有成员类字段

到目前为止,我有一个解决方案,使用派生自被测试类的类夹具访问受保护的成员.以下代码显示了这个想法:

struct MyFixture : ClassUnderTest { };

TEST_FIXTURE(MyFixture, OneTest)
{
    do_something();
    CHECK(protected_field == true);
}
Run Code Online (Sandbox Code Playgroud)

尽管如此,我认为这不是很干净,因为在某些配置中可能会出现与继承有关的问题,无论如何,只有受保护的成员才能被访问和测试.

我试图将测试类声明为朋友,但由于这些是由UnitTest ++以某种特殊方式创建的,我还没有设法做到这一点.

有没有人知道如何让测试类成为被测试类的朋友?

是否有另一种方式以更容易或不同的方式解决这个问题?

谢谢大家.

c++ unit-testing unittest++

13
推荐指数
2
解决办法
4366
查看次数

如何使用UnitTest ++运行单个测试?

如何使用UnitTest ++运行单个测试?

我正在运行UnitTest ++.我的main功能如下:

int main()
{
   printf("diamond test v0.1 %s\n\n",TIMESTAMP);
   diamond::startup();
   UnitTest::RunAllTests();
   diamond::shutdown();
   printf("press any key to continue...");
   getc(stdin);
}
Run Code Online (Sandbox Code Playgroud)

对于调试我想写一些UnitTest::RunSingleTests("MyNewUnitTest");代替的东西UnitTest::RunAllTests();.UnitTest ++是否提供了这样的功能?如果是,那么语法是什么?

c++ unittest++

11
推荐指数
2
解决办法
3505
查看次数

我怎么告诉lcov在哪里找到我的.cpp和.h文件?

我的源代码和构建树看起来像这样(参见Makefile将目标文件从源文件不同的目录放入一个单独的目录?)make之后(构建并运行FooAndBarTests):

src
- Foo.cpp
- Bar.cpp
inc
- Foo.h
- Bar.h
test
- FooTest.cpp
- BarTest.cpp
- Main.cpp
- Makefile
- obj
  - Foo.gcda
  - Foo.gcno
  - Bar.gcda
  - Bar.gcno
- FooAndBarTests
UnitTest++
- libUnitTest++.a
- src
  - ...
Run Code Online (Sandbox Code Playgroud)

然后我可以通过运行gcov -o obj/ ../src/Foo.cpp和生成测试目录中的.gcov文件gcov -o obj/ ../src/Bar.cpp.

但如果我跑,lcov -d obj/ -c -o FooAndBarTests.lcov我得到:

Capturing coverage data from obj/
Found gcov version: 4.2.1
Scanning obj/ for .gcda files ...
Found 4 data files in …
Run Code Online (Sandbox Code Playgroud)

c++ code-coverage gcov lcov unittest++

11
推荐指数
1
解决办法
9087
查看次数

UnitTest ++入门

这是我的基本示例中的当前代码:http://unittest-cpp.sourceforge.net/UnitTest++.html

#include <unittest++/UnitTest++.h>

TEST(FailSpectacularly)
{
    CHECK(false);
}

int main() {
    return UnitTest::RunAllTests();
}
Run Code Online (Sandbox Code Playgroud)

在包括存在,但我收到的错误:undefined reference to UnitTest::Test::*UnitTest::*这里*是单元测试++库中的一些任意的类/方法.

如何才能正确编译?

c++ unit-testing unittest++

7
推荐指数
1
解决办法
4651
查看次数

Scons AddPostAction导致依赖性检查错误解决方法

在scons中,我试图建立一个UnitTest系统(见下面的代码),基于这里的一个很好的例子:http://spacepants.org/blog/scons-unit-test

然而,由于最近的scons 2.0.1及更新版本中存在问题,这会产生依赖性循环,如下所述:http://old.nabble.com/AddPostAction-executes-on-first-build-but-not-subsequent- td18360675.html(和其他地方).

有谁知道这个问题的良好解决方案或替代解决方案?

码:

def UnitTest(env, target, source, **kwargs):
  curTest = env.Program(target, source, **kwargs)
  env.AddPostAction(curTest, curTest[0].abspath)
  env.Alias('unit_tests', curTest)
  env.AlwaysBuild(curTest)
  return curTest

SConsEnvironment.UnitTest = UnitTest

mandolineTest = env.UnitTest(target='./codeTest',
  source = mix(['test.cc', 'base.cc'),
  LIBS = default_libs + ['bgl',],
  LIBPATH = default_libs_path, 
  CPPPATH = default_includes )
Run Code Online (Sandbox Code Playgroud)

scons unittest++

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

UnitTest ++多次构建灯具?

我在UnitTest ++中编写了一些单元测试,并希望编写一些共享一些公共资源的测试.我认为这应该通过他们的TEST_FIXTURE设置工作,但似乎是为每个测试构建一个新的夹具.示例代码:

#include <UnitTest++.h>

struct SomeFixture {
    SomeFixture() {
        // this line is hit twice
    }
};

TEST_FIXTURE(SomeFixture, FirstTest) {
}

TEST_FIXTURE(SomeFixture, SecondTest) {
}
Run Code Online (Sandbox Code Playgroud)

我觉得我必须做错事; 我曾经认为拥有夹具的重点是设置/拆卸代码只发生一次.我错了吗?还有什么我需要做的才能让它以这种方式工作吗?

c++ unit-testing unittest++

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

标签 统计

unittest++ ×6

c++ ×5

unit-testing ×3

code-coverage ×1

gcov ×1

lcov ×1

scons ×1