Jor*_*son 5 c# dll automation coded-ui-tests
我正在运行一个引用DLL的CodedUI测试,该DLL引用了一种"配置"文件.在运行测试时,当前Directory返回CodedUI放置我使用过的测试结果文件的目录
AppDomain.CurrentDomain.BaseDirectory
Run Code Online (Sandbox Code Playgroud)
和
System.Reflection.Assembly.GetExecutingAssembly().CodeBase
Run Code Online (Sandbox Code Playgroud)
和
System.Reflection.Assembly.GetExecutingAssembly().Location
Run Code Online (Sandbox Code Playgroud)
这些都给了我相同的道路
我需要的是获取DLL所在的路径,因为这是构建配置文件的位置.
如果我正在调试或者我刚刚运行测试(显然),这将改变的位置,所以我不能使用它并向后导航或类似的东西.
有没有其他方法来获取您引用的DLL的位置?
编辑:
我从我引用的DLL内部引用此配置文件.
到目前为止,我找到测试 dll 的原始路径的唯一地方是测试上下文中的私有变量。我最终使用反射来获取值并使其可用。
using System.Reflection;
using Microsoft.VisualStudio.TestTools.UnitTesting;
public static string CodeBase(
TestContext testContext)
{
System.Type t = testContext.GetType();
FieldInfo field = t.GetField("m_test", BindingFlags.NonPublic | BindingFlags.Instance);
object fieldValue = field.GetValue(testContext);
t = fieldValue.GetType();
PropertyInfo property = fieldValue.GetType().GetProperty("CodeBase");
return (string)property.GetValue(fieldValue, null);
}
Run Code Online (Sandbox Code Playgroud)
我使用它来获取正在运行的 DLL 的路径,然后使用它来运行我知道被编译到与测试所在位置相同的应用程序。
如果有人找到更好的方法来实现这一点,也请告诉我。
| 归档时间: |
|
| 查看次数: |
2076 次 |
| 最近记录: |