所以我有两个项目,Tester和Coder我已经在我的测试仪项目中添加了Coder.dll作为参考,问题是这两个项目都有自己的"SetUp.resx"文件用于安装,并且由于某种原因,测试仪项目使用Coder的"SetUp.resx"文件,而不是自己的SetUp.resx文件
Coder has a string Name "browser" whose values are "Chrome, Firefox"
Tester has a string Name "browser" whose value is "Chrome"
如上所示,";浏览器";值用于进行测试,因此在Coder中将存在两个测试用例,即"0";Chrome和firefox";在Tester中应该只有一个测试,即Chrome,但它仍然显示2个测试(Chrome和Firefox(,这表明它从Coder.dll中获取SetUp.resx
这就是SetUp.resx文件在Tester中的样子
Name | Value |Comments
Browser | Chrome |Browser to be tested with separated by Comma
BuildNumber| v2.1 |aka version
这是我为Tester中的SetUp.Designer.cs所做的
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal SetUp() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("TestProject3.Configurations.SetUp", typeof(SetUp).Assembly); //Path of Tester's SetUp.resx
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
internal static string BuildNumber {
get {
return ResourceManager.GetString("BuildNumber", resourceCulture);
}
}
internal static string Browser { //Gets string value for Browser in SetUp.resx
get {
return ResourceManager.GetString("Browser", resourceCulture);
}
}
}
这是访问resx的函数的代码
internal static IEnumerable Browsers()
{
get
{
String[] browser = Configurations.SetUp.Browser.Split(",");
foreach (string b in browser)
{
yield return b;
}
}
}
有人能告诉我哪里出了问题,我的代码应该更改什么吗?
我试图找到一种使用资源文件的文件路径的方法,这样测试人员就不会与编码器的resx混淆。
internal static IEnumerable Browsers()
{
var enviroment = System.Environment.CurrentDirectory;
string resxFile = Directory.GetParent(enviroment).Parent.Parent.FullName + @"ConfigurationsSetUp.resx";
String[] browser;
IDictionaryEnumerator dict;
string key;
using (ResXResourceSet resSet = new ResXResourceSet(resxFile))
{
dict = resSet.GetEnumerator();
while (dict.MoveNext())
{
key = (string)dict.Key;
// Retrieve resource by name.
if (dict.Key is "Browser")
{
browser = resSet.GetString(key).Split(",");
foreach (string b in browser)
{
yield return b;
}
}
}
}
}