所有测试都通过,但TFS将构建标记为部分成功

时间:2011-07-05 13:35:20

标签: .net tfs mstest

我们目前的项目涉及构建由.Net应用程序控制的机器人盒子。我们与很多硬件库接口,我们确实设置了一个集成服务器,其中连接了所有硬件以运行夜间回归测试。

不幸的是,并非我们设置中的所有硬件库都与TFS和MSTest很好地集成。

当我们运行构建并使用某个librairy进行测试时,我们会遇到以下两种行为之一:

  • 所有测试都会被传入 TFS但是构建显示为 部分成功。
  • TFS显示没有测试运行,但是日志显示所有测试都已通过,build被标记为部分成功。

查看日志,我们可以在测试发布到TFS服务器后看到这两行,  “处理MSTest例外”  “MSTest.exe返回退出代码0 ,表示并非所有测试都通过了”

让我感到困惑的是,从命令行使用mstest运行相同的测试并不会显示此问题。此外,当从命令行运行时,MsTest 在所有测试通过时返回0,在出现错误时返回1

所以我的问题是:

  1. 成功/失败的适当MSTest返回代码是什么
  2. 除了登录visual studio之外,还有其他详细的登录功能吗?
  3. 关于在哪里看的任何线索?
  4. 附加信息:在mstest中使用(或不使用)“NoIsolation”标志时,我们注意到了区别。使用该标志时将通过具体测试,但其他测试将失败......我们仍在调查那个。

    由于

    编辑:日志的相关部分:     30/30测试通过

    Summary
    -------
    Test Run Completed.
    Passed  30
    ----------
    Total   30
    Results file:  C:\Builds\1\Galil Daily build\TestResults\D201364-W7$_D201364-W7 2011-07-05 10_23_33_Any CPU_Debug.trx
    Test Settings: Default Test Settings
    Waiting to publish...
    Publishing results of test run D201364-W7$@D201364-W7 2011-07-05 10:23:33_Any CPU_Debug to http://mtlapp07:8080/tfs/DI_DEV...
    ..Publish completed successfully.
    Final Property Values
    Category = Galil
    CommandLineArguments = /noisolation
    Flavor = 
    MaxPriority = -1
    MinPriority = -1
    PathToResultsFilesRoot = C:\Builds\1\Galil Daily build\TestResults
    Platform = 
    Publish = True
    SearchPathRoot = C:\Builds\1\Galil Daily build\Binaries
    TestConfigId = -1
    TestConfigName = 
    TestContainers = System.Linq.OrderedEnumerable`2[System.String,System.String]
    TestLists = 
    TestMetadata = 
    TestNames = 
    TestSettings = 
    ToolPath = 
    Version = -1
    Final Property Values
    Condition = False
    Final Property Values
    Condition = True
    
    00:00
    Handle MSTest Exception
     MSTest.exe returned an exit code of 0 indicating that not all tests passed.
    
    00:00
    If testException is NOT TestFailureException
    Initial Property Values
    Condition = False
    Final Property Values
    Condition = False
    

    编辑2.0:

    using System;
    using Microsoft.VisualStudio.TestTools.UnitTesting;
    using Galil;
    
    namespace TestProject1
    {
    [TestClass]
    public class UnitTest1
      {
        [TestMethod]
        public void TestMethod1()
        {
            Galil.Galil m_galil = new Galil.Galil();
            m_galil.address = "COM4 19200";
            string resp = m_galil.command("MTA=2.5;");
            Assert.AreEqual(":", resp);
            try
            {
                m_galil.address = "OFFLINE";
            }
            catch (Exception)
            {
            }
        }
    
        [TestMethod]
        public void TestMethod2()
        {
            Galil.Galil m_galil = new Galil.Galil();
            m_galil.address = "COM4 19200";
            string resp = m_galil.command("MTA=2.0;");
            Assert.AreEqual(":", resp);
            try
            {
                m_galil.address = "OFFLINE";
            }
            catch (Exception)
            {
            }
        }
      }
    }
    

2 个答案:

答案 0 :(得分:2)

成功/失败的适当MSTest返回代码是什么

退出代码1 =并非所有测试都通过

示例:

  

C:\程序   文件\的MSBuild \微软\ VisualStudio的\ TeamBuild \ Microsoft.TeamFoundation.Build.targets(1377,5,1377,5):   警告:MSTest.exe返回退出   代码1表示不是全部   测试通过了。

所有测试都通过

示例:

  

等待发布......发布   试运行的结果   Company_TFSBuild_SVC @ BUILD-DEV   2011-07-01 13:15:46_Any CPU_Release to   http://company-source:8080/ ...
  ..Publish成功完成。

除了在visual studio中登录,是否还有其他详细的登录功能?

您可以转到以下网址获取更详细的日志:

  

菜单栏 - >工具 - >选项...... - >   项目和解决方案 - >的MSBuild   项目构建输出详细程度

任何关于在哪里寻找的线索?

需要查看您的日志文件。

答案 1 :(得分:2)

实际上,我们能够将问题隔离到将输出字符串输入标准错误流的库中。不知何故,如果TFS在标准错误上看到某些内容,它会将测试标记为部分完成。