我有一个DLL项目,我经常编译为.exe
,以便我可以轻松地测试其中的类。一个类包含Main()
方法,当我将其编译为.dll
文件时,该方法无用。每当我将它编译为类库时,我想自动从项目中排除这个类。看起来我必须是第一个遇到这个问题的人之一,因为全能的谷歌似乎没有回答我的问题:我该怎么做?
答案 0 :(得分: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);
}
}
答案 1 :(得分:0)
我有几个我能想到的解决方案:
1)使用条件编译器选项。例如,只有在调试
时才包含它#if DEBUG
public void Main() {
// Do Stuff
}
#ENDIF
2)创建Main方法internal
,或将其移动到可以运行的测试项目中。然后直接使用它,或者确保测试DLL可以看到内部方法。
3)将Main方法移出一个完全不同的引用原始DLL的.exe。 (这与不使用测试框架的选项2类似。)