Как запустить тесты автоматизации в AppCenter только для Android и iOS?

Я использую Xamarin.UITest и NUnit для автоматизации мобильных приложений и использую конвейер Azure DevOps для запуска тестов в AppCenter. В настоящее время тесты в AppCenter проходят нормально как на платформах Android, так и на iOS. Однако у меня есть требование, по которому я хотел бы запускать определенные тесты только на Android и опираться только на iOS. Может ли кто-нибудь поделиться некоторыми предложениями о том, как это сделать?


person Dinesh Kumar    schedule 08.07.2020    source источник
comment
Почему бы вам просто не добавить чек для Device.RuntimePlatform, как показано здесь docs.microsoft.com/en-us/xamarin/xamarin-forms/platform/device, и если он равен Device.iOS, просто сделать возврат в своей настройке?   -  person Saamer    schedule 19.07.2020


Ответы (1)


Наконец, я нашел решение самостоятельно. Я заставил его работать, проверяя платформу перед каждым тестом в методе настройки. Пожалуйста, найдите мой приведенный ниже код, написанный на C # и NUnit. Например, есть 2 теста, в которых должен выполняться только один тест, а другой не должен выполняться, затем один тест (необходимо запустить) с категорией с пометкой iOS, а другой - без категории.

[TextFixture(Platform.Android)]
[TextFixture(Platform.iOS)]
public class Sample{
       [SetUp]
        public void RunBeforeEachTest()
        {
            if(AppManager.Platform == Platform.iOS)
            {
                if(!hasiOSCategory())
                {
                    Assert.Inconclusive();
                }
            }
        }

Затем выполните проверку метода настройки, чтобы проверить, является ли текущая платформа iOS, а также проверьте, есть ли у теста категория iOS.

// this method is used to get all categories of the test.
        private static bool hasiOSCategory()
        {   
            var categories = TestContext.CurrentContext.Test?.Properties["Category"];
            bool hasTestContainsiOSCategory = categories != null && categories.Contains(Constant.iOS);
            return hasTestContainsiOSCategory;
        }

        [Test,Category("iOS")]
        public void TestWithCategory()
        {
            \\your code
        }

        [Test]
        public void TestWithoutCategory()
        {
        }
}

Наконец, если что-то можно достичь в рамках фреймворка, то оно должно работать и в AppCenter.

person Dinesh Kumar    schedule 31.07.2020