【问题标题】:MS Build v4.0.30319 complains about mstest.exe "/category:" switchMS Build v4.0.30319 抱怨 mstest.exe "/category:" 开关
【发布时间】:2011-05-24 03:09:49
【问题描述】:

我正在尝试添加运行属于特定类别的 selenium 测试的功能。在我们的 selenium 测试文件中,我添加了一个测试类别属性。因为我们有自动化测试,所以我们使用 msbuild.exe 来构建目标应用程序,然后使用带有类别开关的 mstest.exe 来运行测试。

每次我运行测试时,msbuild.exe 都会显示“MSBUILD : error MSB1001: Unknown switch. Switch: /category:cat1&cat2”

msbuild 的版本是 4.0.30319。有什么想法/建议吗?

谢谢!

【问题讨论】:

    标签: .net msbuild mstest


    【解决方案1】:

    听起来您正试图将 mstest.exe 特定的命令行参数之一传递给 msbuild.exe,对吧?不确定您希望它如何工作,msbuild.exe 不理解它们。大概您正在使用 msbuild 在 Exec 任务中调用 mstest ,或者您是否正在通过其他方式执行测试?无论如何,/category:... 开关需要传递到对 mstest.exe 的调用中。您可以让您的 msbuild 脚本接受适当的 msbuild 参数并将其转换为 mstest 可识别的参数,例如:

    >msbuid My.proj /p:mstestcat=cat1%26cat2
    

    这会传入一个名为 $(mstestcat) 的新的有效 msbuild 属性。 %26 是 msbuild 转义 '&' 字符的方式。当您在 msbuild 中调用 mstest.exe 时,请执行以下操作,

    <Exec
      Command="mstest.exe ... /category:$(mstestcat)"
      ...
      />
    

    【讨论】:

    • 我正在使用 msbuild 并在 exec 任务中调用 mstest。
    • 那么我的回答有帮助吗,还是还有别的什么?
    • 我已经解决了这个错误。但是,mestest.exe 没有运行属于两个或更多类别的测试。
    • Exec 任务似乎将 & 符号解释为单独的多个命令。我发现一种解决方法是使用来自msbuildextensionpack.codeplex.com 的命令行任务。
    • 在 MSTest.exe 的 documentation 中有以下注释:如果您的过滤器包含单个类别,例如 /category:group1,则不必将过滤器括在引号中分数。但是,如果您的过滤器引用了多个类别,例如 /category:"group1&group2",则过滤器必须用引号引起来。 也许您没有使用引号?
    猜你喜欢
    • 2020-06-13
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    • 2017-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多