我正在尝试编写一个单元测试来访问我与项目关联的资源。这是一般结构。该资源具有供MyLibClass使用的字符串,并且该类设置为en-US
Solution1
--MyLibrary
--Properties
--AssemblyInfo.cs
--Resources.resx
--Resource.Designer.cs
--References
--MyLibClass.cs
--MyLibrary.Tests
--Properties
--AssemblyInfo.cs
--References
--MyLibClassTests.cs
--MainProject
测试需要设置类并将其传递给ResourceManager,因为我正在尝试使用依赖注入。当我尝试在测试中使用下面的代码加载时,我收到以下错误。
由于资源嵌入在MyLibrary.dll中,MyLibraryTest.dll如何访问它?
resmgr = new ResourceManager("MyLibrary",
Assembly.GetExecutingAssembly());
NUnit中的错误
MyLibrary.Tests. MyLibClassTests.IsInValidMyProperty_Blank:
An unexpected exception type was thrown
Expected: System.ArgumentException
but was: System.Resources.MissingManifestResourceException : Could not find any
resources appropriate for the specified culture or the neutral culture. Make sure
"MyLibrary.resources" was correctly embedded or linked into assembly "MyLibrary.Tests"
at compile time, or that all the satellite assemblies required are loadable and
fully signed.
所以在考虑之后,dll就在单独的项目文件夹中。
有没有更好的方法来解决这个问题?
答案 0 :(得分:2)
在您的示例中,您已经将程序集传递给加载资源 - 您只是出于某种原因使用不包含您正在查找的资源的程序集。很可能你需要传递MyLibClass
所在的同一个程序集,而不是Assembly.GetExecutingAssembly()
,我认为这样可以汇总测试代码。
resmgr = new ResourceManager("MyLibrary",
typeof(MyLibClass).Assembly);