Skip to content

Instantly share code, notes, and snippets.

@davepcallan
Created January 14, 2025 03:28
Show Gist options
  • Save davepcallan/04c1f5233fa98d0c0bc4f358952d3974 to your computer and use it in GitHub Desktop.
Save davepcallan/04c1f5233fa98d0c0bc4f358952d3974 to your computer and use it in GitHub Desktop.
xUnit Parameterized Test example using Fizz Buzz algorithm
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