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

时间:2016-09-19 13:19:56

标签: c++ powershell cmd appveyor

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

我们现在想要在Appveyor中为我们的自动Windows构建添加测试功能,同时仍然保持这个简单的返回值检查。

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

我发现您可以在Appveyor上运行自定义CMD和Powershell测试脚本,这听起来像是检查测试返回值的理想方式。
不幸的是,我们都缺乏使用CMD和Powershell的经验,并且不知道如何实现这一目标。

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

2 个答案:

答案 0 :(得分:1)

您也可以使用Cmake和Make for Windows。默认情况下,Cmake安装在构建工作者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会话,以便能够从构建工作器进行连接和调试。

谢谢,

伊利亚安德。

答案 1 :(得分:0)

我们设置.appveyor.yml就像这样:

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

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