1

我有一个 DLL 项目,我经常将其编译为一个.exe,以便我可以轻松地测试其中的类。一个类包含一个Main()方法,当我将它编译为.dll文件时它是无用的。每当我将它编译为类库时,我想自动从项目中排除这个类。看来我一定是第一个遇到这个问题的人,因为全能的谷歌似乎没有回答我的问题:我该怎么做?

4

2 回答 2

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);
  }
}
于 2013-04-22T11:59:51.223 回答
0

你有几个我能想到的解决方案:

1)使用条件编译器选项。例如,只有在调试时才包含它

#如果调试

public void Main() {  
// Do Stuff  
}  

#万一

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

3) 将 Main 方法移到引用原始 DLL 的完全不同的 .exe 中。(这类似于不使用测试框架的选项 2)。

于 2013-04-22T11:59:58.883 回答