【问题标题】:The unit test adapter failed to connect to the data source or to read the data. (is not marked as serializable)单元测试适配器连接数据源或读取数据失败。 (未标记为可序列化)
【发布时间】:2016-09-09 09:08:05
【问题描述】:

我正在使用 VS 2015 Enterprise 并尝试让我的单元测试直接从 TFS 2013 中的测试用例读取数据。目前我在尝试通过数据源连接时遇到以下错误。

结果消息:单元测试适配器未能连接到数据 源或读取数据。有关故障排除的更多信息 此错误,请参阅“数据驱动单元测试故障排除” (http://go.microsoft.com/fwlink/?LinkId=62412) 在 MSDN 库中。 错误详情:类型 'Microsoft.TeamFoundation.TestManagement.Client.TestObjectNotFoundException' 在大会'Microsoft.TeamFoundation.TestManagement.Client, 版本=14.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a' 是 未标记为可序列化。

我的测试方法是这样的。

[TestMethod]
[DataSource("TfsDataSource")]
public void Test1()
{
     string expected = "t1";
     string actual = TestContext.DataRow["actual"].ToString();
     Assert.AreEqual(expected, actual);
}

我的配置部分是这样的:

   <section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
  </configSections>
  <connectionStrings>
    <add name="TestCaseConnection" connectionString="http://tfsurl/DefaultCollection;projectname" providerName="Microsoft.VisualStudio.TestTools.DataSource.TestCase"/>
  </connectionStrings>
  <microsoft.visualstudio.testtools>
    <dataSources>
      <add name="TfsDataSource" connectionString="TestCaseConnection" dataTableName="103217" dataAccessMethod="Sequential"/>
    </dataSources>
  </microsoft.visualstudio.testtools>

已经搜索了一段时间的解决方案,但没有找到与此问题匹配的任何内容,因此感谢所有帮助或输入!

【问题讨论】:

    标签: c# unit-testing tfs mstest


    【解决方案1】:

    我已经在我这边测试了你的测试方法,它可以工作。你可以按照我下面的步骤再试一次:

    首先,在 TFS 的测试用例中插入参数actual。检查下面的屏幕截图:

    然后,创建一个单元测试项目。检查下面的代码:

    using Microsoft.VisualStudio.TestTools.UnitTesting;
    
    
    namespace UnitTestProject1
    {
        [TestClass]
        public class UnitTest1
        {
            [DataSource("Microsoft.VisualStudio.TestTools.DataSource.TestCase", "http://tfsurl:8080/tfs/DefaultCollection;teamprojectname", "TestCaseID", DataAccessMethod.Sequential), TestMethod]
            public void Test1()
    {
        string expected = "t1";
        string actual = TestContext.DataRow["actual"].ToString();
        Assert.AreEqual(expected, actual);
    }
            public TestContext TestContext
            {
                get { return testContextInstance; }
                set { testContextInstance = value; }
            }
            private TestContext testContextInstance;
        }
    }
    

    最后,添加一个 .testsettings 文件,然后选择这个 testsettings 文件。现在运行测试,您应该可以成功测试。

    【讨论】:

    • 好的,谢谢你的建议。我试过了,它返回相同的错误。您还有其他建议我可以尝试吗?真的试图为此找到解决方案。是否有可能我需要在 TFS 中进行一些更改才能使其正常工作。
    • 我已经尝试过您的建议,但没有成功。使用其他数据源(例如 excel 或 csv)时,测试通过 TFS 可以正常工作。在您的 testsettings 文件中,您是否指定了任何特定内容?已尝试使用 testsettings 和 runsettings。
    • 我刚刚添加了一个默认的 .testsettings 文件,没有做任何修改。您是否为您的 TFS url 指定了端口号:tfsurl:8080/tfs/DefaultCollection
    • 好的,我仍然遇到同样的错误,使用默认的 .testsettings 文件。是否有可能对 TFS 权限做任何事情? TFS 中是否有任何需要添加/更改的设置?这是我正在尝试读取的公司 TFS,是否也可以在线使用 Visual Studio 完成,只是试图排除它成为我们 TFS 的可能性......
    • 很高兴我已经解决了这个问题。由于网址错误,它失败了。我们服务器的默认 url 包含我用 %20 替换的空格,然后导致错误。当使用传统空间时,它开始起作用。感谢您的所有帮助和建议。 :)
    猜你喜欢
    • 1970-01-01
    • 2019-06-22
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    • 2011-06-23
    • 2019-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多