In this section, you'll set up a smart contract test and test it using `forge`. ### Step 1: Test Script You will see a directory called `test` in the root of your project. This is where you can view/write your tests. The demo `counter.sol` comes with a test script `counter.t.sol`, which contains: ```solidity // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.13; contract CounterTest is Test { Counter public counter; function setUp() public { counter = new Counter(); counter.setNumber(0); } function test_Increment() public { counter.increment(); assertEq(counter.number(), 1); } function testFuzz_SetNumber(uint256 x) public { counter.setNumber(x); assertEq(counter.number(), x); } } ``` ### Step 2: Run the Test To run the test, execute the following command in the root of your project: ```shell forge test ``` This will run the test script and display the results in the terminal. ```shell forge test [⠊] Compiling... [⠊] Compiling 33 files with Solc 0.8.24 [⠒] Solc 0.8.24 finished in 947.64ms Compiler run successful! Ran 2 tests for test/Counter.t.sol:CounterTest [PASS] testFuzz_SetNumber(uint256) (runs: 256, μ: 30899, ~: 31288) [PASS] test_Increment() (gas: 31303) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 11.85ms (6.49ms CPU time) Ran 2 test suites in 137.32ms (19.93ms CPU time): 6 tests passed, 0 failed, 0 skipped (6 total tests) ``` :::note[Additional tests] If you need additional tests, or want to go deep on this step, visit the [Foundry Tests Documentation](https://book.getfoundry.sh/forge/tests).. :::