【发布时间】:2017-05-18 16:30:26
【问题描述】:
我已经开始使用 Rider 在 Linux 中使用 C# 进行开发。我已经创建了我的测试,例如:
namespace RAWConverter
{
using NUnit.Framework;
[TestFixture]
public class SerializationHelperTest
{
[Test]
public void SerializeEntry()
{
msRun msRun = new msRun();
SerializationHelper.SerializationEntry(System.IO.Path.GetTempFileName(), msRun);
}
[Test]
public void DeserializationEntry()
{
msRun msRun = SerializationHelper.DeserializationEntry(getFileNameFromResource(RAWConverter.Properties.));
Console.WriteLine(msRun.endTime);
}
private string getFileNameFromResource(String fileName)
{
String strAppPath = Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);
String strFilePath = Path.Combine(strAppPath, "resources");
return Path.Combine(strFilePath, fileName);
}
}
}
我的项目中有一个名为 resources 的文件夹,其中包含该文件。但是,当我执行测试时它失败了,因为这个变量
System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
在/usr/bin
有什么想法吗?
【问题讨论】:
-
bin 文件夹是默认输出目录,项目二进制文件在项目构建时复制到该目录并从中执行。如果您要将资源文件夹及其内容复制到 bin 文件夹,则测试将起作用。
-
感谢@Nkosi 的快速回复。好吧,我知道 bin 文件夹是默认执行的地方。如果我指向如下直接路径,该测试也将起作用:/home/user/resources。我更想知道使用 C# .Net 项目定义和访问资源文件夹的确切方式。
标签: c# linux unit-testing rider