如何在运行Coded UI时解析当前目录

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内部引用此配置文件.

Dav*_*vin 3

到目前为止,我找到测试 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 的路径,然后使用它来运行我知道被编译到与测试所在位置相同的应用程序。

如果有人找到更好的方法来实现这一点,也请告诉我。