有没有一种方法来单元测试本地化资源在asp.net核心类库



我想有一个资源类库并在另一个最测试类库中测试它。这是我的项目。(我的resx文件在Resources文件夹中)

{
  "version": "1.0.0-*",
  "dependencies": {
  "NETStandard.Library": "1.6.0",
  "Microsoft.AspNetCore.Mvc.DataAnnotations": "1.0.1"
 },
 "buildOptions": {
  "embed": {
    "include": [ "Resources/PS.ModelBase.Models.Person.fa.resx" ]
  }
 },
 "frameworks": {
  "netstandard1.6": {
   "imports": "dnxcore50"
  }
}
  }
这是我的测试方法:
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Resources;
using System.Threading.Tasks;
namespace PS.ModelBaseTest
{
[TestClass]
public class PersonTest
{
    [TestMethod]
    public void FullNameValidateNullFirstName()
    {
        ResourceManager rm = new ResourceManager(typeof(PS.ModelBase.Models.Person));
        string test = rm.GetString("Fisrt Name", new System.Globalization.CultureInfo("fa-IR"));
        Assert.AreEqual("Fisrt Name", test);
    }
  }
 }

当我运行测试时,我有这个错误:

找不到适合指定区域性或中性文化。确保" ps。modelbase。models。person。resources"正确嵌入或链接到组装"PS.ModelBase"在编译时,或所需的所有附属程序集

我该怎么办?

َ更新:

Ok。我通过将resx插入Models文件夹(Person类在其中)并将resx文件重命名为类名(如Person.en.resx)来解决我的问题。与项目无关。Json:

{
   "dependencies": {
   "NETStandard.Library": "1.6.0",
    "Microsoft.AspNetCore.Mvc.DataAnnotations": "1.0.1"
},
    "frameworks": {
    "netstandard1.6": {
     "imports": "dnxcore50"
 }
 },
 "version": "1.0.0-*"
}

但我面临另一个问题,我想保持我的resx文件在资源文件夹,而不是在模型文件夹!如何在资源文件夹中嵌入resx文件到person类?

我得到第二个问题。事实上,资源文件和类必须在同一个域中

使用以下两个资源作为参考:

Github问题:项目更新。json模式

项目。json参考

根据所讨论的项目文件,尝试

  • "includeFiles"字符串/string []
    要包含的文件路径列表。这些路径位于项目文件夹中。这个列表有一个更高的优先级高于包含和排除globing模式,因此是一个文件这里列出的和排除globing模式中的仍然是包括在内。默认为none。
"buildOptions": {
  "embed": {
    "includeFiles": [ "Resources/PS.ModelBase.Models.Person.fa.resx" ]
  }
}

只对应一个资源文件,或者

  • "包括"字符串/string []
    文件的文件globing模式列表包括。模式植根于项目文件夹。默认为没有。
"buildOptions": {
  "embed": {
    "include": [ "Resources" ]
  }
}

表示Resources文件夹的内容

最新更新