使用 Visual Studio 2019 对 BizTalk 2020 人工制品进行单元测试会导致 Intellisense 问题

Posted

技术标签:

【中文标题】使用 Visual Studio 2019 对 BizTalk 2020 人工制品进行单元测试会导致 Intellisense 问题【英文标题】:Unit test BizTalk 2020 artefacts using Visual Studio 2019 leads to Intellisense issue 【发布时间】:2021-01-23 08:41:25 【问题描述】:

我在尝试对 Visual Studio 2019 中的 BizTalk 2020 工件进行单元测试时遇到问题。

这是我遵循的步骤:

我创建了新的空 BizTalk 项目“测试”并将其配置为在项目属性中进行单元测试。 我在项目中创建了一个名为“Pipelines”的文件夹 在此文件夹中,我创建了一个带有单个“XML 反汇编程序”组件的接收管道“ppr_Testing.btp”。 我创建了新的单元测试项目“_Test” 在“_Test”项目中,我添加了对“Testing”的项目引用 在单元测试项目中,我创建了一个单元测试并尝试编写代码来实例化“ppr_Testing”管道
using Testing.Pipelines;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;

namespace _Test

    
    /// <summary>
    ///This is a test class for Test_ppr_Testing and is intended
    ///to contain all Test_ppr_Testing Unit Tests
    ///</summary>
    [TestClass()]
    public class Test_ppr_Testing
    

        private TestContext testContextInstance;

        /// <summary>
        ///Gets or sets the test context which provides
        ///information about and functionality for the current test run.
        ///</summary>
        public TestContext TestContext
        
            get
            
                return testContextInstance;
            
            set
            
                testContextInstance = value;
            
        

        /// <summary>
        ///A test for ppr_Testing Constructor
        ///</summary>
        [TestMethod()]
        public void Test_ppr_TestingConstructor()
        
            ppr_Testing target = new ppr_Testing();

            var lDocuments = new System.Collections.Specialized.StringCollection();
            lDocuments.Add(@"C:\MyTestDirectory\SomeFile.xml");

            var lParts = new System.Collections.Specialized.StringCollection();
            var lSchemas = new System.Collections.Generic.Dictionary<string, string>();

            try
            
                target.TestPipeline(lDocuments, lParts, lSchemas);
                var lTmp = this.TestContext;
            
            catch (Exception ex)
            
                Assert.Fail(ex.ToString());
            
        
    

结果:

代码下划线错误,因为 Intellisense 无法识别对象 如果我设法在没有 Intellisense 的情况下编写测试代码,它将成功编译并运行

是我做错了什么,还是我的 Visual Studio 2019 安装已损坏?

我正在从 BizTalk 2010 迁移到 BizTalk 2020,并且使用 BizTalk 2010 和 Visual Studio 2010 事情变得更容易了:

我只是进入“测试”菜单,“新建测试...”,然后是“单元测试向导”,按照向导进行操作,一切正常。

提前感谢您的帮助。

【问题讨论】:

感谢@Dijkgraaf 提供附加的图片版本! 【参考方案1】:

在构建包含 BizTalk 人工制品 (btm/btp/xsd) 的 BizTalk 项目时,BizTalk 将为项目中的这些文件生成 .cs 文件。生成的 .cs 文件不会自动添加到项目本身,这会导致单元测试项目中的 Intellisense 无法“看到”类型。 如果您包含 .cs 文件并重新构建,该问题应该会消失。 但是请注意,将生成的 cs 文件添加到项目和代码存储库中可能会在构建时由于文件锁定而引入问题。

【讨论】:

您好,非常感谢您的完美解决方案!

以上是关于使用 Visual Studio 2019 对 BizTalk 2020 人工制品进行单元测试会导致 Intellisense 问题的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2019(VS2019)正式版注册码秘钥

如何在 Visual Studio 2019 中使用具有功能的 .net core + typescript + webpack + npm 模块?

visual studio 2019能写html和js语言吗?

visual studio 2015怎么破解

Visual Studio 2019怎么安装MSDN

visual studio 2019安装秘钥