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

9

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

同时,为接口和实现之间的跳转创建快捷方式?

(键盘快捷键)

例:

IUserService UserService UserServiceTests

如果我能够将它们链接在一起,那么当我在其中任何一个文件中时,我就可以跳转到任何一个文件。

7个回答

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

Demo


3

如前所述,您可以使用TestCop ReSharper插件(gallery link)来完成此操作。

它通过使用正则表达式识别类名和命名空间,将被测试的类与测试夹具绑定。您可以根据需要自定义这些内容,但我发现在现有代码上正确设置这些内容需要进行相当量的试验和错误。

设置完成后,您可以使用键盘快捷键来来回切换。它还可以为您创建TestFixture或类等功能。


TestCop似乎不再可用了。在Resharper 10的扩展列表中也没有出现。而且最后一次发布是在2015年7月14日。 - Ricardo stands with Ukraine
1
我已将图库链接更新为指向TestCop的最新版本。在编写此文时,它支持ReSharper 2016.3并于2017-01-01进行了更新。 - aboy021

3
有没有什么方法可以链接或使用某些约定,以便我可以在给定类的单元测试之间跳转?
要在给定类的单元测试之间跳转,请启动ReSharper的“查找用法”功能,并在“查找结果”工具窗口中获得结果后,以帮助集中关注代码库中特定部分的用法(例如按项目和类型分组)。这将使您能够检测测试项目中的用法。从那里,您可以快速从“查找结果”跳转到代码中的实际用法。作为替代方案,您可以使用ReSharper的“转到符号的用法”,其工作方式类似,但是在弹出菜单中显示搜索结果,而不是刷新到“查找结果”。
如果您的测试类包含显示它们正在覆盖哪些业务逻辑的元数据,这将更有帮助。例如,如果您使用MSpec,则测试类将标有“Subject”属性:[Subject(typeof(MyCoveredClass))] 这很方便,因为此属性内的用法非常明显,导航到它们会直接引导您到测试类的声明。
对于NUnit和MSTest,由于它们的属性将字符串作为参数,如[TestProperty("TestKind", "MyCoveredClass")]。为了找到MyCoveredClass的这种用法,您必须使用ReSharper的“高级查找用法”,并打开“文本出现”选项。
此外,如何创建快捷方式以在接口和实现之间跳转?
要在继承链内进行跳转,ReSharper提供了多个选项,包括“类型层次结构”(ReSharper>检查>类型层次结构)和“转到实现”(ReSharper>导航>转到实现)。

1

ReSharper没有特定的Goto Test/Code功能,除了通过导航到用法列表。

然而,TestDriven.NET有这个功能,它使用命名约定来查找测试/代码对等项,以便您可以来回切换。

此外,创建快捷方式以在接口和实现之间跳转?

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

  • Alt + Home导航到类的基础,如果有多个上下文菜单将列出它们
  • Alt + End向下导航继承层次结构,并像Alt + Home一样工作

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


0

您可以使用ReSharper扩展TestCop

该插件旨在与mstest和nunit一起使用,但应该可以与任何其他需要您分配测试属性的单元测试框架一起使用。


请问您能否提供更多关于您所提供解决方案的细节? - abarisone

0

我认为仅凭 ReSharper 是不可能实现这个的。就 ReSharper 而言,你的单元测试只是 UserService 的另一种使用方式。

此外,所有不同的单元测试框架都有不同的规范,所以很难知道具体情况。例如,进行 BDD 将产生与被测试的类(们)几乎没有关系的测试类名称。

也许你可以编写一个扩展来实现这个功能,可能使用属性或其他方法?不确定。


我明白了,我不知道你可以扩展resharper。 - codecompleting

0

使用 ReSharper 和 NUnit,要从测试转到目标,您可以使用 TestFixture 属性的 TestOf。只需在测试文件中 Ctrl + 单击 MyClass

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接