从.net单元测试vba - 强类型的COM对象

时间:2014-10-22 15:36:38

标签: .net vba unit-testing office-interop

我正在尝试使用.net MS测试项目按照Ray Vega在此主题上的评论来测试vba:Best way to test a MS Access application?

这是我到目前为止所做的:

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Vbe.Interop;

namespace FarmTestSuite
{
    [TestClass]
    public class UnitTest1
    {

        Microsoft.Office.Interop.Access.Application oAccess = null;
        Microsoft.Vbe.Interop.VBProject vbProject = null;

        [TestInitialize]
        public void Setup()
        {
            oAccess = new Microsoft.Office.Interop.Access.Application();
            oAccess.OpenCurrentDatabase(@"\\MyFilePath\Farm.mdb", true);
            vbProject = oAccess.VBE.VBProjects.Item(1);
        }

        [TestMethod]
        public void TestMethod1()
        {
            Assert.AreEqual("clsTestClass",vbProject.VBComponents.Item("clsTestClass").Name);
        }
    }
}

然而,既然我已经做到这一点,我意识到我的.net应用程序不知道clsTestClass类型,所以我不能实例化它,也不能调用它的公共方法。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

这里可能完全错了,但是当使用Excel VBA做类似的事情时,我发现VBA类可以是“私人”和“私人”。或者'公共不可创造的'。如果你使你的类成为公共类,那么你可以在标准模块中创建一个公共函数,除了实例化你的类然后返回它之外什么都不做。然后你可以使用对象obj = Application.Run("新函数的名称")或类似物来获取你的类。