netbeans c++ googletest 运行 来自 gui 的测试
netbeans c++ googletest run tests from gui
所以我在 ubuntu 14.04 上安装了 NetBeans 8.1 运行。我有一个使用 CMakeLists 文件和 googletest 的现有项目。我正在尝试设置它并运行它。所以我安装了 NBCndUnit,然后按照此处的说明进行操作:https://github.com/offa/NBCndUnit/wiki/Using-existing-projects#a-workaround-for-cmake。
这是我的 project/CMakeLists 文件的一部分:
cmake_policy(SET CMP0037 OLD)
add_custom_target(build-tests COMMENT "starting build-tests target" )
add_custom_target(test myAppTest COMMENT "starting test target")
这是我的 myApp/test CMakeLists 文件的一部分:
add_executable(myAppTest ${SOURCES} ${HEADERS})
target_link_libraries(myAppTest
-L${GTEST_LIBRARY_DIR}
-L${GMOCK_LIBRARY_DIR}
myApp
gtest
gmock
# other dependencies
)
add_test(myAppTest myAppTest )
当我右键单击主项目 CMakeLists.txt 文件并选择 "generate makefile" - 它成功了。当我右键单击 Makefile 并转到 Make Target 子菜单时,我可以选择几个目标:
- 全部
- 清洁
- 帮助
- build-tests
- 测试
当我然后选择例如。 "build-tests" 目标 - 没有任何反应(这是预期的,因为这个目标是空的):
cd '(some project path)/cmake_build'
/usr/bin/make -f Makefile build-tests
Built target build-tests
如果我选择 "test" 目标 - 它被构建并执行(在控制台中输出 window)
cd '(path to project)/cmake_build'
/usr/bin/make -f Makefile test
[ 34%] Built target dependency1
[ 54%] Built target dependency2
[ 82%] Built target dependency3
[ 88%] Built target dependency4
[ 97%] Built target dependency5
[100%] starting test target
[==========] Running 111 tests from 7 test cases.
[----------] Global test environment set-up.
[----------] 1 test from Foo
[ RUN ] Foo.Bar
[ OK ] Foo.Bar (0 ms)
[----------] 1 test from Foo (0 ms total)
(rest of gtest output)
但我想在 Netbeans TestResults window 窗格中查看测试结果。所以我转到菜单中的 'Run'->'Test project' 命令。这里出现了一个问题:一个新的选项卡被添加到输出窗格,它的标题是 myApp(Build, Build Tests...)。它会尝试构建整个项目:
cd '(project path)/cmake_build'
/usr/bin/make -j4 -f Makefile
问题是,由于依赖关系,整个项目尚不可构建。所有必要的都在 myAppTest 中模拟(并且测试本身是可运行的 - 例如,通过从 makefile 上下文菜单构建 "test" 目标)。所以真正的问题是:
我能否以某种方式在构建和 运行 实际测试之前跳过构建整个项目?
Can I somehow skip building whole project before bulding and running the actual tests?
Netbeans 默认构建 all
个目标。我猜这在某种程度上是集成的。一种认为您可以尝试的方法是从该默认目标中排除对象/目标。
另一种方法:添加一个选项(例如 BUILD_TESTS_ONLY
),它只构建 运行 测试所需的部分。默认情况下可以关闭此选项,因此它不会破坏任何其他构建。
好吧,我部分地解决了我的问题。我所做的是添加自定义项目属性配置方案:
我只是添加了一些伪造的构建目标 (build_tests
),所以 NB 构建它而不是默认的 all
目标。有点 hacky,但可以满足我的需要。
所以我在 ubuntu 14.04 上安装了 NetBeans 8.1 运行。我有一个使用 CMakeLists 文件和 googletest 的现有项目。我正在尝试设置它并运行它。所以我安装了 NBCndUnit,然后按照此处的说明进行操作:https://github.com/offa/NBCndUnit/wiki/Using-existing-projects#a-workaround-for-cmake。 这是我的 project/CMakeLists 文件的一部分:
cmake_policy(SET CMP0037 OLD)
add_custom_target(build-tests COMMENT "starting build-tests target" )
add_custom_target(test myAppTest COMMENT "starting test target")
这是我的 myApp/test CMakeLists 文件的一部分:
add_executable(myAppTest ${SOURCES} ${HEADERS})
target_link_libraries(myAppTest
-L${GTEST_LIBRARY_DIR}
-L${GMOCK_LIBRARY_DIR}
myApp
gtest
gmock
# other dependencies
)
add_test(myAppTest myAppTest )
当我右键单击主项目 CMakeLists.txt 文件并选择 "generate makefile" - 它成功了。当我右键单击 Makefile 并转到 Make Target 子菜单时,我可以选择几个目标:
- 全部
- 清洁
- 帮助
- build-tests
- 测试
当我然后选择例如。 "build-tests" 目标 - 没有任何反应(这是预期的,因为这个目标是空的):
cd '(some project path)/cmake_build'
/usr/bin/make -f Makefile build-tests
Built target build-tests
如果我选择 "test" 目标 - 它被构建并执行(在控制台中输出 window)
cd '(path to project)/cmake_build'
/usr/bin/make -f Makefile test
[ 34%] Built target dependency1
[ 54%] Built target dependency2
[ 82%] Built target dependency3
[ 88%] Built target dependency4
[ 97%] Built target dependency5
[100%] starting test target
[==========] Running 111 tests from 7 test cases.
[----------] Global test environment set-up.
[----------] 1 test from Foo
[ RUN ] Foo.Bar
[ OK ] Foo.Bar (0 ms)
[----------] 1 test from Foo (0 ms total)
(rest of gtest output)
但我想在 Netbeans TestResults window 窗格中查看测试结果。所以我转到菜单中的 'Run'->'Test project' 命令。这里出现了一个问题:一个新的选项卡被添加到输出窗格,它的标题是 myApp(Build, Build Tests...)。它会尝试构建整个项目:
cd '(project path)/cmake_build'
/usr/bin/make -j4 -f Makefile
问题是,由于依赖关系,整个项目尚不可构建。所有必要的都在 myAppTest 中模拟(并且测试本身是可运行的 - 例如,通过从 makefile 上下文菜单构建 "test" 目标)。所以真正的问题是: 我能否以某种方式在构建和 运行 实际测试之前跳过构建整个项目?
Can I somehow skip building whole project before bulding and running the actual tests?
Netbeans 默认构建 all
个目标。我猜这在某种程度上是集成的。一种认为您可以尝试的方法是从该默认目标中排除对象/目标。
另一种方法:添加一个选项(例如 BUILD_TESTS_ONLY
),它只构建 运行 测试所需的部分。默认情况下可以关闭此选项,因此它不会破坏任何其他构建。
好吧,我部分地解决了我的问题。我所做的是添加自定义项目属性配置方案:
我只是添加了一些伪造的构建目标 (build_tests
),所以 NB 构建它而不是默认的 all
目标。有点 hacky,但可以满足我的需要。