我正在尝试使用.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类型,所以我不能实例化它,也不能调用它的公共方法。有没有办法做到这一点?
答案 0 :(得分:1)
这里可能完全错了,但是当使用Excel VBA做类似的事情时,我发现VBA类可以是“私人”和“私人”。或者'公共不可创造的'。如果你使你的类成为公共类,那么你可以在标准模块中创建一个公共函数,除了实例化你的类然后返回它之外什么都不做。然后你可以使用对象obj = Application.Run("新函数的名称")或类似物来获取你的类。