我正在尝试编写一个约定测试,指定一个方法只应在某些上下文中调用 - 具体来说,我有一个静态Empty
getter,我只想允许在测试方法中使用它,与用TestAttribute
.
我知道我还应该将 getter 标记为过时,使用另一种方法等,但我还想要围绕这个进行约定测试,这样它就不会在未来中断。
我猜我想在我的约定测试中通过反射使用静态分析。我将如何进行这种分析?
我正在尝试编写一个约定测试,指定一个方法只应在某些上下文中调用 - 具体来说,我有一个静态Empty
getter,我只想允许在测试方法中使用它,与用TestAttribute
.
我知道我还应该将 getter 标记为过时,使用另一种方法等,但我还想要围绕这个进行约定测试,这样它就不会在未来中断。
我猜我想在我的约定测试中通过反射使用静态分析。我将如何进行这种分析?
是的,罗斯林可以在这类事情上提供帮助。这可能看起来像一个独立的分析的一个例子是这样的:
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 附带的代码问题模板,了解在编辑时而不是在测试中执行此操作的另一种方法。