我已经提到AppInitializer 总是为跨平台测试发布android
仍然没有任何解决方案可以帮助我,每当我默认运行 BDD 测试时,平台就会像 Android 一样获得价值。如何让它动态选择平台值?
我已经提到AppInitializer 总是为跨平台测试发布android
仍然没有任何解决方案可以帮助我,每当我默认运行 BDD 测试时,平台就会像 Android 一样获得价值。如何让它动态选择平台值?
我有一个 BaseTest 类,它由所有测试类继承,并装饰有 PlatformTestFixture 属性。然后我们可以根据传入的平台参数启动Android或iOS应用程序。
public class PlatformTestFixtureAttribute : TestFixtureAttribute
{
public PlatformTestFixtureAttribute()
{
}
public PlatformTestFixtureAttribute(params object[] arguments)
: base(arguments)
{
AddPlatformCategory(arguments);
}
private void AddPlatformCategory(object[] args)
{
// Not needed in TestCloud
if (!TestEnvironment.IsTestCloud)
{
foreach (var arg in args)
{
if (arg is Platform)
{
if (Platform.Android == (Platform)arg)
{
AddAndroidCategory();
}
else if (Platform.iOS == (Platform)arg)
{
AddiOSCategory();
}
}
}
}
}
private void AddAndroidCategory()
{
Category = "AndroidTest";
}
private void AddiOSCategory()
{
Category = "iOSTest";
}
}
[PlatformTestFixture(Platform.Android)]
[PlatformTestFixture(Platform.iOS)]
public abstract class BaseTest
{
Platform _platform;
protected BaseTest(Platform platform)
{
_platform = platform;
}
[SetUp]
public virtual void BeforeEachTest()
{
if (platform == Platform.Android)
{
StartAndroidApp();
}
else
{
StartiOSApp();
}
}
}
public class ChildTest : BaseTest
{
public ChildTest(Platform platform)
: base(platform)
{
}
[Test]
public void SomeTest()
{
...
}
}
然后我可以在命令行中运行测试,指定是运行 iOSTest 还是 AndroidTest。
[NUnit] [Test Fixture DLL Path] -include=AndroidTest
OR
[NUnit] [Test Fixture DLL Path] -include=iOSTest