区分SpecFlow和单元测试程序集

时间:2019-04-11 15:20:03

标签: reflection specflow vs-unit-testing-framework

我写了一些代码来分析测试DLL,提取测试名称以及使用反射标记的名称。
我最初编写该文件是为了分析SpecFlow DLL,但是似乎有些调整后,它对于单元测试DLL仍然可以正常工作。
两者都使用MSTest(VSTest.Console.exe)
我想知道是否有人知道如何区分一种类型的程序集,以便我可以使用相同的代码来分析两种类型的程序集,而不必指定它是哪种类型。
同样,如果有人知道执行此操作的现有工具(从DLL中提取测试列表),那就太好了。我觉得我必须在这里重新发明轮子...

示例文件
Specflow DLL
Unit Test DLL
(您可能需要右键单击它们并取消阻止才能加载它们)

TLDR:如何通过代码检测这些DLL中的哪个是Specflow以及哪个是单元测试?

1 个答案:

答案 0 :(得分:1)

嗯,实际上很简单

        public static bool IsSpecflowDll(Assembly assembly)
        {
            var references = assembly.GetReferencedAssemblies();
            foreach (var reference in references)
            {
                if (reference.Name == "TechTalk.SpecFlow")
                {
                    return true;
                }
            }
            return false;
        }