查找为常规测试调用方法的位置

时间:2013-05-06 04:57:44

标签: c# tdd convention roslyn

我正在尝试编写一个约定测试,指定只在某些上下文中调用一个方法 - 特别是我有一个静态Empty getter,我只想在测试方法中使用它,vis方法装饰与TestAttribute

我知道我也应该将getter标记为过时,使用其他方法等,但我也希望围绕此进行常规测试,以便将来不会破坏。

我猜我想通过常规测试中的反射来使用静态分析。我将如何进行这种分析?

1 个答案:

答案 0 :(得分:1)

是的,罗斯林可以帮助解决这类问题。作为独立分析,这可能是一个例子:

var solution = Solution.Load(pathToSolution);
foreach (var project in solution.Projects)
{
    var type = project.GetCompilation().GetTypeByMetadataName(typeNameContainingMethod);
    var method = type.GetMembers("Empty").Single();
    var references = method.FindAllReferences(solution);
    foreach (var referencedSymbol in references)
    {
        foreach (var referenceLocation in references)
        {
            CheckIfCallIsAllowed(referenceLocation);
        }
    }
}

您还可以查看创建代码问题演练和Roslyn CTP附带的代码问题模板,以了解在编辑时而不是在测试中执行此操作的另一种方法。