有没有一种方法可以在asp.net core类库中对本地化资源进行单元测试?

4

我希望有一个资源类库,并在另一个 MSTest 类库中进行测试。 这是我的资源库中的 project.json 文件:(我的 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”程序集中,或者所有所需的卫星程序集都可以加载并完全签名。”
我该怎么办?
更新:
好的,我通过将resx插入到Models文件夹(其中包含Person类)并将resx文件重命名为类名(如Person.en.resx)来解决了我的问题。 与project.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类中?
我遇到了第二个问题。实际上,资源文件和类必须在同一个域中。

尝试使用 "include": [ "Resources" ] 或者 "includeFiles": [ "Resources/PS.ModelBase.Models.Person.fa.resx" ] - Nkosi
我做了这两个,但是我又遇到了同样的错误!!! - paradise_human
更新问题,包含 project.json 内容。 - Nkosi
我做了这个... - paradise_human
我想我找到了第二个问题。实际上,资源文件和类必须在同一个域中... - paradise_human
1个回答

1

参考以下两个资源:

Github问题:更新project.json模式

project.json参考

根据所涉及的项目文件,尝试以下操作之一:

  • "includeFiles" string/string[]
    包含文件路径列表。这些路径以项目文件夹为根目录。此列表优先级高于包含和排除的globbing模式,因此即使在此处列出的文件也在排除的globbing模式中,它仍将被包括在内。默认为无。
"buildOptions": {
  "embed": {
    "includeFiles": [ "Resources/PS.ModelBase.Models.Person.fa.resx" ]
  }
}

针对仅有一个资源文件,或者

  • "include" 字符串/字符串数组
    文件全局匹配模式列表,用于包含文件。 模式从项目文件夹开始。默认为无。
"buildOptions": {
  "embed": {
    "include": [ "Resources" ]
  }
}

对于 Resources 文件夹的内容


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接