Split a test into setup, behavior, and verification steps.

Arrange Act Assert

ArrangeActAssert.cs
using System;

class Program
{
    static int Total(int price, int quantity)
    {
        return price * quantity;
    }

    static void Main()
    {
        int price = ;
        int quantity = 4;

        int actual = Total(price, quantity);
        int expected = 20;
        bool ok = actual == expected;

        Console.WriteLine($"arrange=price:{price},quantity:{quantity}");
        Console.WriteLine($"actual={actual}");
        Console.WriteLine($"expected={expected}");
        Console.WriteLine($"ok={ok}");
    }
}
using System;

class Program
{
    static int Total(int price, int quantity)
    {
        return price * quantity;
    }

    static void Main()
    {
        int price = ;
        int quantity = 4;

        int actual = Total(price, quantity);
        int expected = 20;
        bool ok = actual == expected;

        Console.WriteLine($"arrange=price:{price},quantity:{quantity}");
        Console.WriteLine($"actual={actual}");
        Console.WriteLine($"expected={expected}");
        Console.WriteLine($"ok={ok}");
    }
}
using System;

class Program
{
    static int Total(int price, int quantity)
    {
        return price * quantity;
    }

    static void Main()
    {
        int price = ;
        int quantity = 4;

        int actual = Total(price, quantity);
        int expected = 20;
        bool ok = actual == expected;

        Console.WriteLine($"arrange=price:{price},quantity:{quantity}");
        Console.WriteLine($"actual={actual}");
        Console.WriteLine($"expected={expected}");
        Console.WriteLine($"ok={ok}");
    }
}
testing Arrange-act-assert keeps a test readable by separating input setup, the operation under test, and the final check.