我有一个DLL项目,我经常编译为.exe
,这样我就可以轻松测试其中的类。一个类包含Main()
方法,当我将它编译为.dll
文件时,这种方法是无用的。我想在我将它编译为类库时自动从项目中排除此类。似乎我必须成为第一批遇到这个问题的人之一,因为全能谷歌似乎没有回答我的问题:我该怎么做?Visual Studio:如果编译为DLL,排除一个类
回答
我会认真考虑单位测试作为使徒不断这样做。即使单元测试没有正确实施,您只是将其用作中间调试器。我甚至会说做一个单元测试项目作为调试代码的控制台应用程序的使用者,就获取访问而言,它会使您的生活变得更加轻松,并且在将来如果您希望实现某种形式的单元测试你可以。
[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);
}
}
我想要做的测试不是单元测试;他们通常测试DLL的功能。我正在处理实时采集的数据,我需要测试程序来显示输出,以便我可以验证它是否正确。无法以编程方式验证它。 – 2013-04-22 12:05:28
然后,您应该考虑添加一个控制台应用程序项目来进行测试,尽管Luke建议不要这么做 - 单独执行测试项目的想法听起来像是正确的答案。 – 2013-04-22 12:06:46
你有一对夫妇,我能想到的解决方案:
1)使用条件编译器选项。例如,仅包括它,如果它是在调试
#如果DEBUG
public void Main() {
// Do Stuff
}
#ENDIF
2)使主法internal
,或将其移动到测试项目,你可以运行。然后你直接使用它,或者确保你的测试DLL可以看到内部方法。
3)将Main方法移出到一个完全不同的.exe引用原始DLL。 (这与没有使用测试框架的选项2相似)。
- 1. 如何将一批.NET DLL反编译到Visual Studio项目中
- 2. 如何从Visual Studio中排除文件编译?
- 3. 编译一些dll到另一个dll
- 4. 用Visual Studio编译为x64?
- 5. DLL包括unordered_map不是用visual studio编译器编译
- 6. 可重新编译的编译器 - 用于MS Visual Studio的DLL
- 7. c#DLL只能编译一个类
- 8. 如何编译形成一个DLL
- 9. 将C代码编译为Visual C++ dll?
- 10. C++定义一个类的编译错误函数(Visual Studio)
- 11. 如何使用Visual Studio 2010编译64位的C DLL?
- 12. 如何从Visual Studio 2003 C++ .NET中排除特定的.dll?
- 13. 从Typescript编译效果排除文件到一个输出在Visual Studio中的JS
- 14. 如何编译不同的类库到一个DLL?
- 15. 如何删除Visual Studio中的旧DLL?
- 16. 为visual studio 2010编译qt错误
- 17. 在Visual Studio中将.cu编译为.obj
- 18. C#编译没有visual studio
- 19. Visual Studio代码 - SCSS编译
- 20. Visual Studio使用Boost编译
- 21. visual studio,用参数编译
- 22. 使用Visual Studio编译Cling
- 23. Visual studio编译错误
- 24. Visual Studio 2010编译错误
- 25. 编译错误-1073741502 Visual Studio
- 26. C#编译Visual Studio程序
- 27. Visual Studio 2010编译错误
- 28. Visual Studio 2010编译错误
- 29. visual studio编译时插件
- 30. 编译* .lib文件visual studio
创建一个单元测试项目并从那里测试你的.DLL – LukeHennerley 2013-04-22 11:55:06
单元测试不是简单地用于测试单独的方法吗?我想要测试整个程序。 – 2013-04-22 11:57:02
事情是,它不是一个程序。你所拥有的基本关键是一个'.DLL',因此它不是一个应用程序。测试你的方法本质上是你试图实现的,不是吗? – LukeHennerley 2013-04-22 12:00:52