2011-09-21 50 views
3

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

此外,创建快捷方式之间的界面之间跳转,实现?

(键盘快捷键)

例子:

IUserService UserService UserServiceTests

这将是巨大的,如果我能以某种方式连接这些结合在一起,所以我可以在任何跳转到的任何文件其中一个目前。

回答

2

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

为单元测试之间跳转给定类,推出ReSharper的查找用法的类名,只要你有导致查找结果工具窗口,他们组的方式这有助于专注于代码库特定部分的用法 - 例如,按项目和类型。这会让您在测试项目中检测到使用情况。从那里,你可以快速从跳到查找结果到代码中的实际用法。作为替代方案,您可以使用ReSharper的转至使用符号,它以类似的方式工作,但在弹出式菜单中显示搜索结果,而不是将其刷新到查找结果

如果您的测试类包含元数据以显示它们覆盖的业务逻辑,这将有助于更好地区分所需的用途。例如,如果您使用的是MSpec,则测试类将标记为主题属性:[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

0

我不认为这将是可能的只是resharper。就resharper而言,你的单元测试只是UserService的另一个用法。另外,所有不同的单元测试框架都会指定不同的东西,因此很难知道。比如,做bdd会产生几乎完全与正在测试的类无关的测试类名称。

你可能可以写一个扩展来做到这一点,也许使用属性或东西?不确定。

+0

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

1

ReSharper的不具有特定的测试后藤/代码功能不是通过用途的滚动列表等。

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

另外,为界面之间的跳转创建快捷方式, 的实现?

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

  • Alt +首页导航到类的基础,如果有一个以上的上下文菜单会列出他们
  • Alt + End向下导航继承层次结构和行为像Alt键+主页

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

0

您可以使用ReSharper的扩展TestCop

这个插件是专为MSTEST & NUnit的使用,但应与任何其他单元测试框架,它需要你指定一个测试属性的工作。

+0

您能否请添加关于您提供的解决方案的更多详细信息? – abarisone

1

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

它通过使用正则表达式来识别类名和命名空间,将测试中的类绑定到测试夹具。您可以自定义这些以适应您的需求,但是我发现在现有代码中有相当数量的试验和错误来实现这一点。

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

+0

TestCop似乎不再可用。不会出现在Resharper 10扩展列表中。最后发布的是2015-07-14。 – Riga

+0

我已更新图库链接以指向最新版本的TestCop。在撰写本文时,它支持ReSharper 2016.3,并在2017-01-01更新。 – aboy021

5

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

Demo

0

随着ReSharper的和NUnit,从测试跳转到主题,你可以使用TestFixture属性的TestOf财产。只需按Ctrl +测试文件点击MyClass

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

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

相关问题