我正在运行编码的ui自动化并定义了一个名为[ExternalDataSource()]
的方法属性来读取文档(csv,xml ...)并将数据解析为一些字典。我会在这里复制它,以便您有更好的见解:
[System.AttributeUsage(System.AttributeTargets.Method)]
public class ExternalDataSource : System.Attribute
{
public ExternalDataSource(string filename)
{
DirectoryInfo di = new DirectoryInfo(Assembly.GetExecutingAssembly().Location);
string file = Path.Combine(Path.GetDirectoryName(di.FullName), filename);
try
{
code
}
catch (Exception)
{
throw new UITestException("Cannot load data source document");
}
}
}
在其中我尝试访问Assembly.GetExecutingAssembly().Location
以获取复制到TestResult / Out文件夹的文件。我将此属性分配给整个应用程序中的一个TestMethod(),在调试时,我发现应用程序两次输入属性的c'tor。两次位置都不同。一旦它来自bin / Debug文件夹,另一次来自TestResults / Out文件夹。两个问题:
答案 0 :(得分:0)
好吧似乎没有人有答案,但是在使用mstest.exe
和vs2012 JIT调试器从命令行调试运行时,我发现了一件奇怪的事情:
在此属性所在的类中放置System.Diagnostics.Debugger.Break()
时,从 MSTest.exe 调用了抖动,但当此断点位于使用此属性修饰的testmethod
中时, QTAgent32.exe 被调用。我已经实现了一个单例类来处理我的参数,当它被MSTest在这个属性的ExternalDataSource中填充时,当进入QTAgent32(测试)时它是空的。
对我有用的解决方案就是用[TestInitialize()]
上的数据初始化Singleton。
希望这有助于某人。