2013-04-22 36 views
1

我有一个DLL项目,我经常编译为.exe,这样我就可以轻松测试其中的类。一个类包含Main()方法,当我将它编译为.dll文件时,这种方法是无用的。我想在我将它编译为类库时自动从项目中排除此类。似乎我必须成为第一批遇到这个问题的人之一,因为全能谷歌似乎没有回答我的问题:我该怎么做?Visual Studio:如果编译为DLL,排除一个类

+1

创建一个单元测试项目并从那里测试你的.DLL – LukeHennerley 2013-04-22 11:55:06

+0

单元测试不是简单地用于测试单独的方法吗?我想要测试整个程序。 – 2013-04-22 11:57:02

+0

事情是,它不是一个程序。你所拥有的基本关键是一个'.DLL',因此它不是一个应用程序。测试你的方法本质上是你试图实现的,不是吗? – LukeHennerley 2013-04-22 12:00:52

回答

1

我会认真考虑单位测试作为使徒不断这样做。即使单元测试没有正确实施,您只是将其用作中间调试器。我甚至会说做一个单元测试项目作为调试代码的控制台应用程序的使用者,就获取访问而言,它会使您的生活变得更加轻松,并且在将来如果您希望实现某种形式的单元测试你可以。

[TestMethod] 
public class YourClassNameTests 
{ 
    public T YourObject; 
    [TestInitialize()] 
    public void Initializer() 
    { 
    YourObject = new T(); 
    } 
    [TestMethod()] 
    public void YourMethodTest() 
    { 
    //Arrange 
    YourObject.ReliantProperty = 1; 
    //Act 
    var objResult = YourObject.YourMethod(); 
    //Assert 
    Assert.IsTrue(objResult == 1); 
    } 
} 
+0

我想要做的测试不是单元测试;他们通常测试DLL的功能。我正在处理实时采集的数据,我需要测试程序来显示输出,以便我可以验证它是否正确。无法以编程方式验证它。 – 2013-04-22 12:05:28

+0

然后,您应该考虑添加一个控制台应用程序项目来进行测试,尽管Luke建议不要这么做 - 单独执行测试项目的想法听起来像是正确的答案。 – 2013-04-22 12:06:46

0

你有一对夫妇,我能想到的解决方案:

1)使用条件编译器选项。例如,仅包括它,如果它是在调试

#如果DEBUG

public void Main() { 
// Do Stuff 
} 

#ENDIF

2)使主法internal,或将其移动到测试项目,你可以运行。然后你直接使用它,或者确保你的测试DLL可以看到内部方法。

3)将Main方法移出到一个完全不同的.exe引用原始DLL。 (这与没有使用测试框架的选项2相似)。