Jenkins 如何使用“排除测试”/类别“;来自詹金斯的mstest

Jenkins 如何使用“排除测试”/类别“;来自詹金斯的mstest,jenkins,continuous-integration,gitlab,mstest,gitlab-ci,Jenkins,Continuous Integration,Gitlab,Mstest,Gitlab Ci,在你指出其他问题之前,请继续阅读 我正在运行Jenkins的mstest参数(不确定这是否相关),并希望排除不属于特定类别的测试。 在类别中包含测试使用/category:CI进行处理,但当我使用它排除使用/category:的测试时!CI它不起作用。它只是说没有要执行的测试。我确信我的容器中存在不属于此类别的测试。 我正在使用mstest测试VS2010 mstest.exe /testcontainer:%%i /runconfig:%TestSettingFile% /category:"

在你指出其他问题之前,请继续阅读

我正在运行Jenkins的mstest参数(不确定这是否相关),并希望排除不属于特定类别的测试。 在类别中包含测试使用
/category:CI
进行处理,但当我使用它排除使用
/category:的测试时!CI
它不起作用。它只是说没有要执行的测试。我确信我的容器中存在不属于此类别的测试。 我正在使用mstest测试VS2010

mstest.exe /testcontainer:%%i /runconfig:%TestSettingFile% /category:"!CI" /resultsfile:Results.trx
知道我做错了什么吗

编辑
我发现这个命令在Jenkins上运行时不起作用,但是通过本地框上的cmd可以很好地工作-Jenkins当前有没有关于这个的bug?

有趣的是,把category作为最后一个参数似乎起了作用。如果您看到相同的问题,请尝试移动参数

编辑

我只留下上面的答案作为参考,即使它是完全不正确的

由于Jenkins批处理命令忽略了“!”标记,所以为了转义它,我不得不使用“^”字符


因此,我的类别现在被列为
/category:“^!CI”

显然,当MSTest.exe的路径中有空格时,MSTest+Jenkins存在已知问题。尝试将其路径(在Jenkins配置中)更改为DOS样式
..\PROGRA~1\mstest\etc
,或者改用Windows批处理命令。那里肯定有问题-您知道Jenkins上的项目编号或指向此问题的链接吗?看起来像是使用“执行Windows批处理命令”这可能是一个前进的方向:我在GitLab CI上看到了同样的问题。使用转义字符在那里也很有效。