共用方式為


使用分類的測試

重要

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 必須使用應用程式和應用程式套件組合的路徑進行設定。