在Unity3d的Unity Test Runner中进行单元测试时加载文件

时间:2018-07-17 23:23:58

标签: c# visual-studio unit-testing unity3d nunit

使用Unity 2018.1.1f1和Visual Studio Community 2017

我一直在使用unity内置的Test Runner创建单元测试。在此特定的单元测试中,我想将文件的内容读取为字符串。无需构建文件的静态路径(该路径位于单元测试类本身的旁边),如何引用它?

文件夹结构如下:

Directory:
Assets/Plugins/MyTools/Common/Properties/_tests/

Files:
MyTools.Common.Properties.Tests.asmdef
PropertiesTests.cs
test.txt
test-prop-file.txt

测试和一些输出详细信息:

namespace MyTools.Common.Properties.Tests {
    public class PropertiesTests {
        [Test]
        public void ParsePropsFile() {
            Debug.Log(Assembly.GetExecutingAssembly().GetName());
            // MyTools.Common.Properties.Tests, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null

            Debug.Log(GetType().Assembly.GetManifestResourceNames().Length);
            // 0

            Debug.Log(Assembly.GetExecutingAssembly().GetManifestResourceNames().Length);
            // 0
        }
    }
}

在Visual Studio中,我尝试设置test-prop-file.txt和test.txt的属性(“构建操作=嵌入式资源,复制到输出目录=始终复制”),但是它们似乎没有设置任何东西。另外,当我关闭VS并重新打开它时,它们又恢复为之前的状态(“无”和“不复制”)。我还尝试了其他组合,例如“构建操作=资源或内容”,但还是没有。

那么我该如何在单元测试中加载这些文件而又不直接使用诸如D:/Code/Unity/MyProject/Assets/Plugins/MyTools/Common/Properties/_tests/test.txt之类的静态路径直接引用它们?

1 个答案:

答案 0 :(得分:0)

可以使用以下方法检索当前测试组件的位置:

TestContext.CurrentContext.TestDirectory

(如果我没有记错的话,中间的'CurrentContext'可能不是必需的!)