仅在特定平台上排除单元测试
Excluding unit tests only on specific platform
我的场景如下:
我正在使用 Xamarin.Forms 开发跨平台移动应用程序。该解决方案的一部分是针对 iOS/Android/WP8 的单元测试项目,并且在每个平台上执行的测试都在一个共享库中。
测试是使用 xUnit.Net 框架编写的。
现在我有一些测试在所有移动平台上都成功了,但在 Windows 上却没有(即当我在开发期间从 VS 中 运行 它们时):
// in a PCL (which is referenced by platform-specific unit test projects)
[Fact]
public void SomeTest()
{
// succeeds on iOS, Android, and WinPhone
// fails on Windows (when executed from within Visual Studio)
}
我不想 运行 在开发过程中每次都从每个移动平台进行单独测试 - 这会非常耗时。当然,我只会分块做。
结果是我有一堆在 VS 中失败的单元测试,我看不出它是 'real' 错误还是 'only' 特定于平台的问题。相反,我想立即查看问题出在哪里,而不是必须单独检查数十个红色测试。
有人知道怎么做吗?
如果您要为每个平台创建不同的构建(我相信您一定是这样),为什么不使用编译预处理器指令排除您不想 运行 的测试?
然后您可以在 VS 编译期间传入值 WINDOWS
并使用以下命令排除测试:
#if !WINDOWS
[Fact]
public void SomeTest()
{
// succeeds on iOS, Android, and WinPhone
// fails on Windows (when executed from within Visual Studio)
}
#endif
有关如何使用预处理器指令的更多信息,请参见此处:MSDN: C# Preprocessor Directives
可以不用traits to achieve this吗?
ie 添加一个特征,指定测试不应该在 windows 上 运行 然后你可以只执行在 visual studio 中没有这个特征的测试使用任何测试 运行您正在使用的内容。
我的场景如下: 我正在使用 Xamarin.Forms 开发跨平台移动应用程序。该解决方案的一部分是针对 iOS/Android/WP8 的单元测试项目,并且在每个平台上执行的测试都在一个共享库中。
测试是使用 xUnit.Net 框架编写的。
现在我有一些测试在所有移动平台上都成功了,但在 Windows 上却没有(即当我在开发期间从 VS 中 运行 它们时):
// in a PCL (which is referenced by platform-specific unit test projects)
[Fact]
public void SomeTest()
{
// succeeds on iOS, Android, and WinPhone
// fails on Windows (when executed from within Visual Studio)
}
我不想 运行 在开发过程中每次都从每个移动平台进行单独测试 - 这会非常耗时。当然,我只会分块做。
结果是我有一堆在 VS 中失败的单元测试,我看不出它是 'real' 错误还是 'only' 特定于平台的问题。相反,我想立即查看问题出在哪里,而不是必须单独检查数十个红色测试。
有人知道怎么做吗?
如果您要为每个平台创建不同的构建(我相信您一定是这样),为什么不使用编译预处理器指令排除您不想 运行 的测试?
然后您可以在 VS 编译期间传入值 WINDOWS
并使用以下命令排除测试:
#if !WINDOWS
[Fact]
public void SomeTest()
{
// succeeds on iOS, Android, and WinPhone
// fails on Windows (when executed from within Visual Studio)
}
#endif
有关如何使用预处理器指令的更多信息,请参见此处:MSDN: C# Preprocessor Directives
可以不用traits to achieve this吗?
ie 添加一个特征,指定测试不应该在 windows 上 运行 然后你可以只执行在 visual studio 中没有这个特征的测试使用任何测试 运行您正在使用的内容。