dotnet-testing-test-naming-conventions
14
总安装量
14
周安装量
#23343
全站排名
安装命令
npx skills add https://github.com/kevintsengtw/dotnet-testing-agent-skills --skill dotnet-testing-test-naming-conventions
Agent 安装分布
claude-code
11
gemini-cli
10
antigravity
9
opencode
9
cursor
8
github-copilot
7
Skill 文档
.NET 測試å½åè¦ç¯æå
é©ç¨æ å¢
ç¶è¢«è¦æ±å·è¡ä»¥ä¸ä»»åæï¼è«ä½¿ç¨æ¤æè½ï¼
- çºæ¸¬è©¦æ¹æ³ææ¸¬è©¦é¡å¥å½å
- 檢è¦ä¸¦æ¹é²ç¾ææ¸¬è©¦çå½å
- ç¢ºä¿æ¸¬è©¦å ±åçå¯è®æ§
- 建ç«åéä¸è´ç測試å½åæ¨æº
æ¸¬è©¦æ¹æ³å½åè¦ç¯
æ¨æºæ ¼å¼
使ç¨åºç·åéç䏿®µå¼å½åæ³ï¼
[è¢«æ¸¬è©¦æ¹æ³å稱]_[測試æ
å¢/輸å
¥æ¢ä»¶]_[é æè¡çº/çµæ]
åæ®µèªªæ
| åæ®µ | 說æ | ç¯ä¾ |
|---|---|---|
| è¢«æ¸¬è©¦æ¹æ³å稱 | æ£å¨æ¸¬è©¦çæ¹æ³å稱 | AddãProcessOrderãIsValidEmail |
| 測試æ å¢/è¼¸å ¥æ¢ä»¶ | æè¿°æ¸¬è©¦çåç½®æ¢ä»¶æè¼¸å ¥ | 輸å
¥1å2ã輸å
¥nullã輸å
¥ææè¨å® |
| é æè¡çº/çµæ | æè¿°é æçè¼¸åºæè¡çº | æåå³3ãææåºExceptionãæåå³True |
å½åç¯ä¾å°ç §è¡¨
â 好çå½å vs â ä¸å¥½çå½å
| â ä¸å¥½çå½å | â 好çå½å | åå |
|---|---|---|
TestAdd |
Add_輸å
¥1å2_æåå³3 |
æ¸ æ¥èªªææ¸¬è©¦æ å¢èé æçµæ |
Test1 |
Add_輸å
¥è² æ¸åæ£æ¸_æå峿£ç¢ºçµæ |
ææç¾©çæè¿° |
EmailTest |
IsValidEmail_輸å
¥ææEmail_æåå³True |
宿´ç䏿®µå¼å½å |
OrderTest |
ProcessOrder_輸å
¥null_ææåºArgumentNullException |
æç¢ºçä¾å¤æ å¢ |
實éç¯ä¾
åºæ¬éç®æ¸¬è©¦
// â
æ£å¸¸è·¯å¾æ¸¬è©¦
[Fact]
public void Add_輸å
¥1å2_æåå³3()
// â
éçæ¢ä»¶æ¸¬è©¦
[Fact]
public void Add_輸å
¥0å0_æåå³0()
// â
è² æ¸æ¸¬è©¦
[Fact]
public void Add_輸å
¥è² æ¸åæ£æ¸_æå峿£ç¢ºçµæ()
é©èé輯測試
// â
ææè¼¸å
¥æ¸¬è©¦
[Fact]
public void IsValidEmail_輸å
¥ææEmail_æåå³True()
// â
ç¡æè¼¸å
¥ - null
[Fact]
public void IsValidEmail_輸å
¥nullå¼_æåå³False()
// â
ç¡æè¼¸å
¥ - 空å串
[Fact]
public void IsValidEmail_輸å
¥ç©ºå串_æåå³False()
// â
ç¡æè¼¸å
¥ - æ ¼å¼é¯èª¤
[Fact]
public void IsValidEmail_輸å
¥ç¡æEmailæ ¼å¼_æåå³False()
æ¥åé輯測試
// â
èçæµç¨æ¸¬è©¦
[Fact]
public void ProcessOrder_輸å
¥ææè¨å®_æåå³èçå¾è¨å®()
// â
ä¾å¤èçæ¸¬è©¦
[Fact]
public void ProcessOrder_輸å
¥null_ææåºArgumentNullException()
// â
æ ¼å¼å測試
[Fact]
public void GetOrderNumber_輸å
¥ææè¨å®_æå峿 ¼å¼åè¨å®è碼()
è¨ç®é輯測試
// â
æ£å¸¸è¨ç®
[Fact]
public void Calculate_輸å
¥100å
å10Percentææ£_æåå³90å
()
// â
ç¡æè¼¸å
¥ - è² æ¸
[Fact]
public void Calculate_輸å
¥è² æ¸å¹æ ¼_ææåºArgumentException()
// â
éç弿¸¬è©¦
[Fact]
public void Calculate_輸å
¥0å
广 ¼_ææ£å¸¸èç()
// â
å«ç¨
è¨ç®
[Fact]
public void CalculateWithTax_輸å
¥100å
å5Percentç¨
ç_æåå³105å
()
çæ è®å測試
// â
åå§çæ
測試
[Fact]
public void Increment_å¾0éå§_æåå³1()
// â
é£çºæä½æ¸¬è©¦
[Fact]
public void Increment_å¾0éå§é£çºå
©æ¬¡_æåå³2()
// â
éè¨æ¸¬è©¦
[Fact]
public void Reset_å¾ä»»æå¼_æåå³0()
測試é¡å¥å½åè¦ç¯
æ¨æºæ ¼å¼
[被測試é¡å¥å稱]Tests
ç¯ä¾
| 被測試é¡å¥ | 測試é¡å¥å稱 |
|---|---|
Calculator |
CalculatorTests |
OrderService |
OrderServiceTests |
EmailHelper |
EmailHelperTests |
PriceCalculator |
PriceCalculatorTests |
é¡å¥çµæ§ç¯æ¬
namespace MyProject.Tests;
/// <summary>
/// class CalculatorTests - Calculator 測試é¡å¥
/// </summary>
public class CalculatorTests
{
private readonly Calculator _calculator;
public CalculatorTests()
{
_calculator = new Calculator();
}
//---------------------------------------------------------------------------------------------
// Add æ¹æ³æ¸¬è©¦
[Fact]
public void Add_輸å
¥1å2_æåå³3()
{
// ...
}
//---------------------------------------------------------------------------------------------
// Divide æ¹æ³æ¸¬è©¦
[Fact]
public void Divide_輸å
¥10å2_æåå³5()
{
// ...
}
}
忏忏¬è©¦å½å
ä½¿ç¨ [Theory] æçå½åè¦ç¯ï¼
// â
使ç¨ãå種ã表示å¤çµæ¸¬è©¦è³æ
[Theory]
[InlineData(1, 2, 3)]
[InlineData(-1, 1, 0)]
[InlineData(0, 0, 0)]
public void Add_輸å
¥å種æ¸å¼çµå_æå峿£ç¢ºçµæ(int a, int b, int expected)
// â
使ç¨ãææã表示æ£å測試
[Theory]
[InlineData("test@example.com")]
[InlineData("user.name@domain.org")]
public void IsValidEmail_輸å
¥ææEmailæ ¼å¼_æåå³True(string validEmail)
// â
使ç¨ãç¡æãè¡¨ç¤ºè² åæ¸¬è©¦
[Theory]
[InlineData("invalid-email")]
[InlineData("@example.com")]
public void IsValidEmail_輸å
¥ç¡æEmailæ ¼å¼_æåå³False(string invalidEmail)
å¸¸ç¨æ å¢è©å½
è¼¸å ¥æ¢ä»¶è©å½
| è©å½ | ä½¿ç¨æ å¢ |
|---|---|
輸å
¥ |
ä¸è¬è¼¸å ¥åæ¸ |
çµ¦å® |
Given-When-Then é¢¨æ ¼ |
ç¶ |
äºä»¶è§¸ç¼ |
å¾...éå§ |
åå§çæ æè¿° |
é æçµæè©å½
| è©å½ | ä½¿ç¨æ å¢ |
|---|---|
æåå³ |
æåå³å¼ |
ææåº |
é æä¾å¤ |
æçº |
çæ é©è |
æå
å« |
éåé©è |
ææ£å¸¸èç |
éçæ¢ä»¶ |
å½åæª¢æ¥æ¸ å®
çºæ¸¬è©¦æ¹æ³å½åæï¼è«ç¢ºèªï¼
- 使ç¨ä¸æ®µå¼å½å
æ¹æ³_æ å¢_é æ - æ å¢æè¿°æ¸ æ¥æç¢º
- é æçµæå ·é«å¯é©è
- 使ç¨ä¸æå¢å å¯è®æ§
- é¿å
模ç³è©å½å¦
Test1ãTestMethod - 忏忏¬è©¦ä½¿ç¨ãå種ãããææãããç¡æãçè©å½
æ¸¬è©¦å ±åå¯è®æ§
好çå½åæè®æ¸¬è©¦å ±åæ´æè®ï¼
â
CalculatorTests
â
Add_輸å
¥1å2_æåå³3
â
Add_輸å
¥è² æ¸åæ£æ¸_æå峿£ç¢ºçµæ
â Divide_輸å
¥10å0_ææåºDivideByZeroException
â
EmailHelperTests
â
IsValidEmail_輸å
¥ææEmail_æåå³True
â
IsValidEmail_輸å
¥nullå¼_æåå³False
åèè³æº
è«åèåç®éä¸çç¯ä¾æªæ¡ï¼
- templates/naming-convention-examples.cs – å½åè¦ç¯å®æ´ç¯ä¾
åå§æç«
æ¬æè½å §å®¹æç èªãèæ´¾è»é«å·¥ç¨å¸«ç測試修練 – 30 å¤©ææ°ãç³»åæç« ï¼
- Day 01 – èæ´¾å·¥ç¨å¸«ç測試åè
- éµäººè³½æç« ï¼https://ithelp.ithome.com.tw/articles/10373888
- ç¯ä¾ç¨å¼ç¢¼ï¼https://github.com/kevintsengtw/30Days_in_Testing_Samples/tree/main/day01