Created
January 14, 2025 03:28
-
-
Save davepcallan/04c1f5233fa98d0c0bc4f358952d3974 to your computer and use it in GitHub Desktop.
xUnit Parameterized Test example using Fizz Buzz algorithm
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using Xunit; | |
using System.Collections.Generic; | |
public static class FizzBuzz | |
{ | |
public static string GetOutput(int number) | |
{ | |
return number switch | |
{ | |
_ when number % 15 == 0 => "FizzBuzz", | |
_ when number % 3 == 0 => "Fizz", | |
_ when number % 5 == 0 => "Buzz", | |
_ => number.ToString() | |
}; | |
} | |
} | |
public class FizzBuzzTests | |
{ | |
// InlineData Test | |
[Theory] | |
[InlineData(1, "1")] | |
[InlineData(2, "2")] | |
[InlineData(3, "Fizz")] | |
[InlineData(4, "4")] | |
[InlineData(5, "Buzz")] | |
[InlineData(6, "Fizz")] | |
[InlineData(10, "Buzz")] | |
[InlineData(15, "FizzBuzz")] | |
[InlineData(30, "FizzBuzz")] | |
[InlineData(31, "31")] | |
public void GetOutput_ShouldReturnExpectedResult_Inline(int number, string expected) | |
{ | |
// Act | |
var result = FizzBuzz.GetOutput(number); | |
// Assert | |
Assert.Equal(expected, result); | |
} | |
// MemberData Test | |
// Use MemberData when we want to share test data across multiple test methods or classes. | |
public static TheoryData<int, string> FizzBuzzData => new TheoryData<int, string> | |
{ | |
{ 1, "1" }, | |
{ 2, "2" }, | |
{ 3, "Fizz" }, | |
{ 4, "4" }, | |
{ 5, "Buzz" }, | |
{ 6, "Fizz" }, | |
{ 10, "Buzz" }, | |
{ 15, "FizzBuzz" }, | |
{ 30, "FizzBuzz" }, | |
{ 31, "31" } | |
}; | |
[Theory] | |
[MemberData(nameof(FizzBuzzData))] | |
public void GetOutput_ShouldReturnExpectedResult_MemberData(int number, string expected) | |
{ | |
// Act | |
var result = FizzBuzz.GetOutput(number); | |
// Assert | |
Assert.Equal(expected, result); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment