使用分類的測試
重要
Visual Studio App Center 已排定於 2025 年 3 月 31 日淘汰。 雖然您可以繼續使用 Visual Studio App Center,直到它完全淘汰為止,但有數個建議您考慮移轉至的建議替代方案。
從 NUnit 架構新增 CategoryAttribute ,即可將 Xamarin.UITests 分組為類別。 這些類別提供執行測試的一些彈性。
例如,應用程式可能會有一組特別適用於平板電腦的測試,另一組用於手機。 使用類別,您可以個別執行平板電腦特定的測試與手機測試。
另一個熱門案例是隔離慢速測試與快速測試。 快速測試會更頻繁地執行,或許每個認可都會執行原始程式碼控制件。 緩慢的測試會較不常執行,例如一天一次。
Xamarin.UITests 可以藉由測試裝置或測試類別來分類,方法是將 新增 CategoryAttribute
至類別或方法。 可以指派多個類別。 下列類別顯示分類的範例:
[TestFixture]
[Category("nerp")]
public class Tests
{
iOSApp app;
[SetUp]
public void BeforeEachTest()
{
app = ConfigureApp.iOS.StartApp();
}
[Test]
[Category("derp")]
[Category("erp")]
public void CreditCardNumber_TooShort_DisplayErrorMessage()
{
app.WaitForElement(c=>c.Class("UINavigationBar").Marked("Simple Credit Card Validator"));
app.EnterText(c=>c.Class("UITextField"), new string('9', 15));
app.Tap(c=>c.Marked("Validate Credit Card").Class("UIButton"));
app.WaitForElement(c => c.Marked("Credit card number is too short.").Class("UILabel"));
}
[Test]
[Category("flerp")]
public void CreditCardNumber_TooLong_DisplayErrorMessage()
{
app.WaitForElement(c=>c.Class("UINavigationBar").Marked("Simple Credit Card Validator"));
app.EnterText(c=>c.Class("UITextField"), new string('9', 17));
app.Tap(c=>c.Marked("Validate Credit Card").Class("UIButton"));
app.WaitForElement(c => c.Marked("Credit card number is too long.").Class("UILabel"));
}
}
有兩種方式可根據類別執行 Xamarin.UITests:
appcenter
- App Center 的 命令行介面 。nunit-console.exe
- NUnit 測試的命令行執行器。 它也可用來在本機執行 Xamarin.UITests。
注意
App Center 不接受 ExplicitAttribute
;標示為 Explicit
的測試仍會執行。
依類別在本機執行測試
在本機執行測試是使用 nunit-console.exe、NUnit 的命令行執行器來完成。 命令行參數 --where
會使用 測試選取語言來比對類別。
nunit-console .\CreditCardValidator.iOS.UITests\bin\Debug\CreditCardValidator.iOS.UITests.dll --where="cat == flerp"
依類別將測試提交至 App Center 測試
警告
️ 無法指定包含空格的 NUnit 類別名稱以進行上傳。
您可以指示 App Center 測試使用 --include-category
參數來執行測試的子集。
appcenter test run uitest --app "<APP NAME>" --devices <DEVICE SET ID> --app-path <PATH TO IPA> --test-series "<TEST SERIES>" --locale "en_US" --build-dir <PATH TO UITEST BUILD DIRECTORY>
--include-category flerp
您也可以使用 --exclude-category
參數依類別排除特定測試。
appcenter test run uitest --app "<APP NAME>" --devices <DEVICE SET ID> --app-path <PATH TO IPA> --test-series "<TEST SERIES>" --locale "en_US" --build-dir <PATH TO UITEST BUILD DIRECTORY>
--exclude-category erp
如需詳細資訊,請參閱 NUnit 控制台指南 ,以瞭解如何使用 類別表示式 ,根據類別組合來包含或排除測試。
使用 --fixture-chunk
時,將會執行整個測試套件,並 --include-cateogry
同時忽略 和 --exclude-category
參數。
注意
️ 在本機執行測試時, IApp
必須使用應用程式和應用程式套件組合的路徑進行設定。