Lab 5
Lab 5
A CLASS TO TEST
FACT
[Fact] is an attribute used to define a test method. It is part of the xUnit testing framework's attribute-
based model for writing tests. A test method marked with the [Fact] attribute is a simple, standalone test
that doesn't take any parameters.
public class CalculatorTests
{
[Fact]
public void Add_WhenGivenTwoIntegers_ShouldReturnTheSum()
{
// Arrange
Calculator calculator = new Calculator();
// Act
int result = calculator.Add(3, 5);
// Assert
Assert.Equal(8, result);
}
[Fact]
public void Subtract_WhenGivenTwoIntegers_ShouldReturnTheDifference()
{
// Arrange
Calculator calculator = new Calculator();
// Act
int result = calculator.Subtract(8, 3);
// Assert
Assert.Equal(5, result);
}
[Fact]
public void Multiply_WhenGivenTwoIntegers_ShouldReturnTheProduct()
{
// Arrange
Calculator calculator = new Calculator();
// Act
int result = calculator.Multiply(4, 6);
// Assert
Assert.Equal(24, result);
}
[Fact]
public void Divide_WhenGivenTwoIntegers_ShouldReturnTheQuotient()
{
// Arrange
Calculator calculator = new Calculator();
// Act
int result = calculator.Divide(10, 2);
// Assert
Assert.Equal(5, result);
}
[Fact]
public void Divide_WhenDividingByZero_ShouldThrowException()
{
// Arrange
Calculator calculator = new Calculator();
Both [Theory] with [InlineData] and [MemberData] offer ways to write parameterized tests, and you can
choose the one that fits your preferences or requirements. They help you avoid duplicating test logic and
make it easier to add new test cases without creating additional methods
[Theory]
[MemberData(nameof(AddTestData))]
public void Add_ShouldReturnTheSum(int a, int b, int expected)
{
// Arrange
Calculator calculator = new Calculator();
// Act
int result = calculator.Add(a, b);
// Assert
Assert.Equal(expected, result);
}
[Theory]
[MemberData(nameof(SubtractTestData))]
public void Subtract_ShouldReturnTheDifference(int a, int b, int
expected)
{
// Arrange
Calculator calculator = new Calculator();
// Act
int result = calculator.Subtract(a, b);
// Assert
Assert.Equal(expected, result);
}
[Theory]
[MemberData(nameof(DivideTestData))]
public void Divide_ShouldReturnTheQuotient(int a, int b, int expected)
{
// Arrange
Calculator calculator = new Calculator();
// Act
int result = calculator.Divide(a, b);
// Assert
Assert.Equal(expected, result);
}
[Theory]
[InlineData(int.MaxValue, 0)] // Divide by zero case
public void Divide_WhenDividingByZero_ShouldThrowException(int a, int b)
{
// Arrange
Calculator calculator = new Calculator();
EXERCISE
OBJECTIVE
}
}
INSTRUCTIONS: