【发布时间】:2014-03-04 22:43:10
【问题描述】:
我想对一些解压代码进行单元测试。我将测试文件放入项目中以在测试中使用。我可以在控制台应用程序中运行代码,它运行良好,但是当我运行测试时它们失败了。
测试:
public void CsvStreamsToCsvStream()
{
string dir = System.IO.Path.GetDirectoryName(
System.Reflection.Assembly.GetExecutingAssembly().Location);
string file = Path.Combine(dir, @"\TestFiles\Test.csv");
using (FileStream fstrm = new FileStream(file, FileMode.Open))
{
var decompressor =
new MemoryDecompresser(fstrm, Path.GetFileName(file));
var results = decompressor.GetStreams();
Assert.AreEqual(1, results.Count());
Assert.AreEqual(results.First().Key, "Test.csv");
}
}
控制台应用:
namespace TestConsoleApp
{
class Program
{
static void Main(string[] args)
{
var test = new TestDecompression();
test.CsvStreamsToCsvStream();
}
}
}
项目:
测试资源管理器:
【问题讨论】:
-
如果这是一个愚蠢的建议,请忽略它,但可能是因为测试位于子文件夹中吗?
-
感谢@Ben 的建议,我认为更多的是 nUnit 正在寻找我的文件的 C 根目录而不是程序集路径
-
您的执行程序集是测试运行器。因此,您使用
GetExecutingAssembly()检索的位置与您的控制台应用程序中的位置不同。请改用System.Reflection.Assembly.GetAssembly(typeof(TestDecompression)).Location。
标签: c# reflection nunit assemblies