运行 在没有测试框架的情况下使用 C++ 在 Appveyor 中进行测试

Running tests in Appveyor with C++ without a testing framework

我们目前已经使用 CMakes 集成 CTest 在 Travis Ci 上设置了我们的测试,它只检查 int main() return 是否为 0 之外的其他值。

我们现在想在 Appveyor 中为我们的自动化 windows 构建添加测试功能,同时仍然保持这种简单的 return 值检查。

到目前为止,我们发现的用于 Appveyors 测试的每个资源都假定我们正在使用某种测试框架,例如 MSTest,而我们并不打算这样做。

我发现您可以在 Appveyor 上 运行 自定义 CMD 和 Powershell 测试脚本,这听起来是检查我们测试的 return 值的理想方式。
不幸的是,我们都没有使用 CMD 和 Powershell 的经验,不知道如何实现这一点。

供参考,这是有问题的项目:JNF_NEAT

您也可以为 Windows 使用 Cmake 和 Make。 cmake 默认安装在 build worker VM 上,make 应该在构建之前添加。这是我在尝试使其工作时创建的appveyor.yml:

install:
# Install make for Windows unsing chocolatey
  - ps: choco install make

build_script:
# Use the same commands which is used in .travis.yml
  - cmake -DCMAKE_CXX_COMPILER=g++-6 CMakeLists.txt

# make fails here now
  - make 
  - make test

# Start RDP access to connect and debug
on_finish:
  - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))

Cmake 似乎可以工作,而 make 失败了。我对那些工具不是很熟悉,但我相信你可以从这里开始调优。我还添加了创建 RDP 会话的语句,以便您能够从构建工作程序进行连接和调试。

谢谢,

伊利亚。

我们这样设置 .appveyor.yml

test_script:
  - C:\projects\jnf-neat\x64\Release\XORSolver.exe
  - C:\projects\jnf-neat\x64\Release\EvenNumbers.exe

其中 XORSolver.exeEvenNumbers.exe 是我们已经在 CMake 上 运行 使用的集成测试。