這邊是我自己在使用的 File Template & Code Style,給有需要的人參考,相關說明後續會持續補上。
$HEADER$namespace $NAMESPACE$
{
[Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute]
public class $CLASS$Tests
{
[Microsoft.VisualStudio.TestTools.UnitTesting.TestInitializeAttribute]
public void TestInitialize()
{
}
[Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute]
[Microsoft.VisualStudio.TestTools.UnitTesting.OwnerAttribute("$User_Name$")]
[Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("$CLASS$")]
[Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("$CLASS$", "$TESTNAME$")]
public async System.Threading.Tasks.Task $TESTNAME$(){$END$}
}
}
User_Name = not editable, macro "Short name of the current user"
TESTNAME = editable at "M-01", macro "No macro selected"
rider 原生的 live templates 已經有此功能,但是資訊較少,調用字是 test
,且會依據不同的測試框架長出不同的 attribute
變數 Owner 需要自己選擇巨集 Full user name of the current user
[Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute]
[Microsoft.VisualStudio.TestTools.UnitTesting.OwnerAttribute("$Owner$")]
[Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("$TestedClassName$")]
[Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("$TestedClassName$", "$FirstTestName$")]
public async System.Threading.Tasks.Task $FirstTestName$()
{
$END$
}
[Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute]
public class $TestedClassName$Tests
{
[Microsoft.VisualStudio.TestTools.UnitTesting.TestInitializeAttribute]
public void TestInitialize()
{
}
[Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute]
[Microsoft.VisualStudio.TestTools.UnitTesting.OwnerAttribute("$Owner$")]
[Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("$TestedClassName$")]
[Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("$TestedClassName$", "$FirstTestName$")]
public async System.Threading.Tasks.Task $FirstTestName$()
{
$END$
}
}
<?xml version="1.0" encoding="utf-16"?>
<Patterns xmlns="urn:schemas-jetbrains-com:member-reordering-patterns">
<TypePattern DisplayName="Non-reorderable types">
<TypePattern.Match>
<Or>
<And>
<Kind Is="Interface" />
<Or>
<HasAttribute Name="System.Runtime.InteropServices.InterfaceTypeAttribute" />
<HasAttribute Name="System.Runtime.InteropServices.ComImport" />
</Or>
</And>
<Kind Is="Struct" />
<HasAttribute Name="JetBrains.Annotations.NoReorderAttribute" />
<HasAttribute Name="JetBrains.Annotations.NoReorder" />
</Or>
</TypePattern.Match>
</TypePattern>
<TypePattern DisplayName="MS Test Fixtures" RemoveRegions="All">
<TypePattern.Match>
<And>
<Kind Is="Class" />
<HasAttribute Name="Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute" Inherited="True" />
</And>
</TypePattern.Match>
<Entry DisplayName="All other members" />
<Entry DisplayName="Setup/Teardown Methods">
<Entry.Match>
<And>
<Kind Is="Method" />
<Or>
<HasAttribute Name="Microsoft.VisualStudio.TestTools.UnitTesting.TestInitializeAttribute" Inherited="True" />
<HasAttribute Name="Microsoft.VisualStudio.TestTools.UnitTesting.TestCleanupAttribute" Inherited="True" />
<HasAttribute Name="Microsoft.VisualStudio.TestTools.UnitTesting.ClassInitializeAttribute" Inherited="True" />
<HasAttribute Name="Microsoft.VisualStudio.TestTools.UnitTesting.ClassCleanupAttribute" Inherited="True" />
</Or>
</And>
</Entry.Match>
<Entry.SortBy>
<Kind Is="Member" />
</Entry.SortBy>
</Entry>
<Entry DisplayName="Test Methods" Priority="100">
<Entry.Match>
<And>
<Kind Is="Method" />
<HasAttribute Name="Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute" />
</And>
</Entry.Match>
<Entry.SortBy>
<Name />
</Entry.SortBy>
</Entry>
<Entry DisplayName="Private Method">
<Entry.Match>
<And>
<Access Is="Private" />
<Kind Is="Method" />
</And>
</Entry.Match>
<Entry.SortBy>
<Name />
</Entry.SortBy>
</Entry>
</TypePattern>
<TypePattern DisplayName="xUnit.net Test Classes" RemoveRegions="All">
<TypePattern.Match>
<And>
<Kind Is="Class" />
<HasMember>
<And>
<Kind Is="Method" />
<HasAttribute Name="Xunit.FactAttribute" Inherited="True" />
</And>
</HasMember>
</And>
</TypePattern.Match>
<Entry DisplayName="All other members" />
<Entry DisplayName="Setup/Teardown Methods">
<Entry.Match>
<Or>
<Kind Is="Constructor" />
<And>
<Kind Is="Method" />
<ImplementsInterface Name="System.IDisposable" />
</And>
</Or>
</Entry.Match>
<Entry.SortBy>
<Kind Order="Constructor" />
</Entry.SortBy>
</Entry>
<Entry DisplayName="Test Methods" Priority="100">
<Entry.Match>
<And>
<Kind Is="Method" />
<HasAttribute Name="Xunit.FactAttribute" />
</And>
</Entry.Match>
<Entry.SortBy>
<Name />
</Entry.SortBy>
</Entry>
<Entry DisplayName="Private Method">
<Entry.Match>
<And>
<Access Is="Private" />
<Kind Is="Method" />
</And>
</Entry.Match>
<Entry.SortBy>
<Name />
</Entry.SortBy>
</Entry>
</TypePattern>
<TypePattern DisplayName="NUnit Test Fixtures" RemoveRegions="All">
<TypePattern.Match>
<And>
<Kind Is="Class" />
<HasAttribute Name="NUnit.Framework.TestFixtureAttribute" Inherited="True" />
</And>
</TypePattern.Match>
<Entry DisplayName="All other members" />
<Entry DisplayName="Setup/Teardown Methods">
<Entry.Match>
<And>
<Kind Is="Method" />
<Or>
<HasAttribute Name="NUnit.Framework.SetUpAttribute" Inherited="True" />
<HasAttribute Name="NUnit.Framework.TearDownAttribute" Inherited="True" />
<HasAttribute Name="NUnit.Framework.FixtureSetUpAttribute" Inherited="True" />
<HasAttribute Name="NUnit.Framework.FixtureTearDownAttribute" Inherited="True" />
</Or>
</And>
</Entry.Match>
</Entry>
<Entry DisplayName="Test Methods" Priority="100">
<Entry.Match>
<And>
<Kind Is="Method" />
<HasAttribute Name="NUnit.Framework.TestAttribute" />
</And>
</Entry.Match>
<Entry.SortBy>
<Name />
</Entry.SortBy>
</Entry>
<Entry DisplayName="Private Method">
<Entry.Match>
<And>
<Access Is="Private" />
<Kind Is="Method" />
</And>
</Entry.Match>
<Entry.SortBy>
<Name />
</Entry.SortBy>
</Entry>
</TypePattern>
<TypePattern DisplayName="Default Pattern">
<Entry DisplayName="Public Delegates" Priority="100">
<Entry.Match>
<And>
<Access Is="Public" />
<Kind Is="Delegate" />
</And>
</Entry.Match>
<Entry.SortBy>
<Name />
</Entry.SortBy>
</Entry>
<Entry DisplayName="Public Enums" Priority="100">
<Entry.Match>
<And>
<Access Is="Public" />
<Kind Is="Enum" />
</And>
</Entry.Match>
<Entry.SortBy>
<Name />
</Entry.SortBy>
</Entry>
<Entry DisplayName="Static Fields and Constants">
<Entry.Match>
<Or>
<Kind Is="Constant" />
<And>
<Kind Is="Field" />
<Static />
</And>
</Or>
</Entry.Match>
<Entry.SortBy>
<Kind Order="Constant Field" />
</Entry.SortBy>
</Entry>
<Entry DisplayName="Fields">
<Entry.Match>
<And>
<Kind Is="Field" />
<Not>
<Static />
</Not>
</And>
</Entry.Match>
<Entry.SortBy>
<Readonly />
<Name />
</Entry.SortBy>
</Entry>
<Entry DisplayName="Constructors">
<Entry.Match>
<Kind Is="Constructor" />
</Entry.Match>
<Entry.SortBy>
<Static />
</Entry.SortBy>
</Entry>
<Entry DisplayName="Properties, Indexers">
<Entry.Match>
<Or>
<Kind Is="Property" />
<Kind Is="Indexer" />
</Or>
</Entry.Match>
<Entry.SortBy>
<Extern />
</Entry.SortBy>
</Entry>
<Entry DisplayName="Interface Implementations" Priority="100">
<Entry.Match>
<And>
<Kind Is="Member" />
<ImplementsInterface />
</And>
</Entry.Match>
<Entry.SortBy>
<ImplementsInterface Immediate="True" />
</Entry.SortBy>
</Entry>
<Entry DisplayName="All other members">
<Entry.SortBy>
<Access />
<Name />
</Entry.SortBy>
</Entry>
<Entry DisplayName="Nested Types">
<Entry.Match>
<Kind Is="Type" />
</Entry.Match>
</Entry>
</TypePattern>
</Patterns>
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up