2011-09-21 62 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的查找使用命令。

相關問題