c# - 将单元测试附加到 C# 项目的标准方法

标签 c# unit-testing nunit

我在单独的项目中编写了几个单元测试。开发的时候,我每次都把dll加载到NUnit.exe中查看结果。鉴于我已经完成编写单元测试,如何组织单元测试并将其附加到解决方案。

我曾尝试在解决方案目录中创建“tools”文件夹,然后放置所有与 NUnit 相关的库,在测试项目的构建后事件中,我像下面这样连接了 nunit,它可以正常工作。

"$(SolutionDir)tools\nunit\nunit-console.exe" "$(TargetPath)"

但在我的一个测试中,我引用了一个 sqlite 数据库。如果我硬编码它的位置它工作正常但我打算将它放在“App_Data”文件夹下的测试项目中。因此,我尝试使用以下代码获取相对路径,但它不起作用。但是当我将文件复制到“工具”文件夹时它工作正常,我猜执行上下文来自 NUnit 文件夹。

Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location),"App_Data\\test.txt")

最佳答案

如果您不需要特定的 nunit,您也可以使用内置的 visual studio 支持来进行单元测试...它也已包含在最新的 Express 版本中,您不必为问题而苦恼像这样 ;)

无论哪种方式,我相信您都误解了单元测试的基础知识。我们从不针对实际数据库进行测试,这是一种非常糟糕的做法。您应该对该主题进行一些研究,并了解 mocking 背后的理论。

关于c# - 将单元测试附加到 C# 项目的标准方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15752234/

相关文章:

angularjs - 如何在 AngularJS 中模拟包含资源的服务

unit-testing - Golang mockgen "does not implement"接口(interface)问题

c# - 保持源代码关闭,单元测试更接近

c# - 断言 NameValueCollection 是否等效

c# - Mvc 起始页使用带有域的 azure 上的区域

c# - 这段代码在 C# 中看起来更干净吗?

java - AssertionFailedError 当输出相同时

c# - 单元测试顺序约定?

c# - 为什么我无法在 Entity Framework 的 SaveChanges() 方法上捕获 SqlException

c# - 在 .NET 中序列化 MailMessage 对象的优雅方式