【问题标题】:Adding resource file for testing in Rider在 Rider 中添加用于测试的资源文件
【发布时间】: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


【解决方案1】:

bin 文件夹是项目构建时项目二进制文件复制到并从其执行的默认输出目录。如果您要手动将资源文件夹及其内容复制到 bin 文件夹,则测试将起作用。

我不熟悉有问题的 IDE,但我建议检查是否存在允许在构建项目时将资源自动复制到输出目录的设置。

在他们的社区中找到评论

Editing file properties - Copy to output directory

我们将在几天后发布新的 EAP 版本,并且在那 新构建“构建操作”和“复制到输出目录”是 下拉菜单。

现在您可以在 SolutionExplorer 中的项目上按 F4 并手动编辑 Include。

【讨论】:

  • IDE 是来自 JetBrain 的 C# Rider IDE
  • 我收集了很多,这就是为什么我检查了如何在构建项目时使用二进制文件部署文件夹。如果您查看支持论坛,您可能会获得更多帮助。我认为这与项目中所需资源的构建动作有关
猜你喜欢
  • 1970-01-01
  • 2020-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多