Targeting Specific Runtimes for Platform Tests

Targeting Specific Runtimes for Platform Tests

21 March 2024

.NET MAUI/Xamarin

Buy Me A Coffee

Hello! 👋

In the previous article, we discussed how to set up and run tests for your .NET MAUI application. The tests are shared for all platforms, but what if you need to test your application against a specific runtime version or environment? Here's how to achieve targeted testing for your platform interactions.

Step 1. Define Runtime and platform

Create a class RuntimePlatform:

Here we define constants for all pairs of Runtime and Platform we need for tests. For example, we want to run Android app tests on Windows and OSX, but Tizen only on OSX.

Step 2. Create an attribute

For tests, I use xUnit. To define the test we need to set the Fact attribute for the test method. But as we want to skip the test on some platforms, we need to extend the Fact attribute.

Create a new class AllowOnPlatformFactAttribute:

This attribute checks if the current runtime and platform match the defined attribute parameter. If the condition is false, the test is skipped.

Step 3. Apply the attribute

The final step is to replace Fact attribute with AllowOnPlatformFact attribute, so our launch test looks like this:

Conclusion

By implementing targeted platform tests, you gain several advantages:

  • Increased Confidence: You can ensure your application functions correctly across various runtime environments, boosting overall confidence in its robustness.

  • Improved Efficiency: By focusing tests on specific runtimes, you can reduce overall test execution time, leading to faster development cycles.

  • Simplified Maintenance: Documented runtime configurations make it easier to maintain and update your test suite as your application and supported platforms evolve.

Happy testing!

Buy Me A Coffee

Related:

How to show SnackBar and Toast using Xamarin Community Toolkit

Demonstrate how to configure SnackBar and Toast using Xamarin Community Toolkit.

Choose the right framework for your next application

A Deep Dive into .NET MAUI, Uno, and Avalonia.

An unhandled error has occurred. Reload

🗙