resharper可以跳转到包含单元测试的文件吗?

时间:2011-09-21 15:34:02

标签: c# resharper

是否有可能以某种方式链接或使用某些约定,以便我可以在给定类的单元测试之间跳转?

另外,在界面和实现之间创建快捷方式?

(键盘快捷键)

示例:

IUserService UserService UserServiceTests

如果我能以某种方式将这些链接在一起,那将是很棒的,所以我可以在其中任何一个文件中跳转到任何这些文件。

7 个答案:

答案 0 :(得分:6)

我刚刚在TestLinker中实现了该功能,这是一个ReSharper 2016.1扩展。它可以从ReSharper Gallery安装。

Demo

答案 1 :(得分:2)

  
    

是否有可能以某种方式链接或使用某些约定,以便我可以在给定类的单元测试之间跳转?

  

要在给定班级的单元测试之间跳转,请在班级名称上启动ReSharper的查找用法,并且只要在查找结果工具窗口中显示结果,将它们组合在一起,有助于关注代码库特定部分的用法 - 例如,按项目和类型。这将检测您的测试项目中的用法。从那里,您可以快速从查找结果跳转到代码中的实际用法。作为替代方案,您可以使用ReSharper的转到符号用法以类似方式工作,但在弹出菜单中显示搜索结果,而不是将其刷新为查找结果

如果您的测试类包含显示他们所涵盖的业务逻辑的元数据,这将有助于更好地区分您需要的用法。例如,如果您正在使用MSpec,则测试类将使用 Subject 属性进行标记:[Subject(typeof (MyCoveredClass))]这很方便,因为此属性中的用法非常明显,导航到它们会直接导致您声明您的测试类: Find MSpec test classes that cover a particular class

使用NUnit和MSTest,这有点复杂,因为它们的属性将字符串作为参数,如:[TestProperty("TestKind", "MyCoveredClass")]。为了找到MyCoveredClass的这种用法,您必须使用ReSharper的查找高级用法并启用文本事件选项。

  
    

另外,创建用于在界面和实现之间跳转的捷径?

  

至于在继承链中跳转,ReSharper提供了多种选项来实现,包括类型层次结构(ReSharper>检查>类型层次结构)和转到实施 (ReSharper>导航>转到实施):

Navigating throughout inheritance chains with Go to Implementation and/or Type Hierarchy

答案 2 :(得分:2)

正如已经提到的,您可以使用TestCop ReSharper插件(gallery link)执行此操作。

它通过使用正则表达式来识别类名和命名空间,从而将被测试的类与测试夹具联系起来。您可以自定义这些以满足您的需求,但我发现在现有代码上有相当多的试验和错误。

一旦完成所有设置,您就可以使用键盘快捷键来回移动。它也可以为你创建TestFixture或类。

答案 3 :(得分:1)

除了浏览使用列表之外,ReSharper没有特定的Goto测试/代码功能。

但是,TestDriven.NET has this feature使用命名约定来查找测试/代码对等体,以便您可以来回翻转。

  

另外,创建用于在界面之间跳转的快捷方式   实现

ReSharper具有此功能。使用Visual Studio方案:

  • Alt + Home导航到类的基础,如果有多个上下文菜单会列出它们
  • Alt + End在继承层次结构中向下导航,其行为类似于Alt + Home

Ctrl + U和Ctrl + Alt + B分别与ReSharper 2.x / IDEA方案等效。

答案 4 :(得分:0)

我认为只有resharper才能做到这一点。就resharper而言,您的单元测试只是UserService的另一种用法。

另外,所有不同的单元测试框架都以不同的方式指定事物,因此很难知道。例如,执行bdd将产生几乎完全与被测试的类无关的测试类名。

您可以编写扩展程序来执行此操作,也许使用属性或其他内容?不确定。

答案 5 :(得分:0)

您可以使用ReSharper Extension TestCop

此插件专为与mstest& nunit但应该与任何其他要求您分配测试属性的unittest框架一起使用。

答案 6 :(得分:0)

使用ReSharper和NUnit,要从测试跳转到主题,您可以使用TestOf属性的TestFixture属性。只需按住Ctrl键并单击测试文件中的MyClass

[TestFixture(TestOf = typeof(MyClass))]
public class MyClassTest

要从主题跳转到测试,请使用ReSharper 查找用法命令。