我正在運行編碼的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文件夾。兩個問題:
- 爲什麼調試器輸入該屬性兩次,如果我只在應用程序中調用它一次?
- 爲什麼同一組件的位置發生變化?