Introduction to Solidity Unit Testing with Foundry
Blog Image
Ariya's photo
ShirouJanuary 28, 2024

Introduction

Welcome to the innovative world of Solidity development! As the ecosystem evolves, so do the tools and practices for ensuring the reliability of smart contracts. One such advancement is Foundry, a Rust-based toolkit, which has revolutionized the way we approach unit testing in Solidity.

What is Foundry and Why Use It for Solidity Unit Testing?

Foundry is a state-of-the-art framework for Solidity development, offering fast and flexible testing tools. Built in Rust, it's known for its performance and robustness. Here are the benefits of using it for testing:

  • Speed: Tests run incredibly fast.
  • Flexibility: Allows for advanced testing techniques, including fuzz testing.
  • Gas Usage Analysis: Provides detailed insights into the gas consumption of your contracts.

Let's get started

Creating the contract
// SPDX-License-Identifier: MIT
  pragma solidity ^0.8.0;
  
  contract MyContract {
   uint public myNumber;
  
   function setMyNumber(uint _myNumber) public {
   myNumber = _myNumber;
   }
  }
Writing Unit Tests in Foundry
// SPDX-License-Identifier: MIT
  pragma solidity ^0.8.0;

  import "ds-test/test.sol";
  import "../src/MyContract.sol";

  contract MyContractTest is DSTest {
    MyContract myContract;

    function setUp() public {
      myContract = new MyContract();
    }

    function testSetMyNumber() public {
      uint expected = 123;
      myContract.setMyNumber(expected);
      assertEq(myContract.myNumber(), expected);
    }
  }

Execute your tests by running forge test in the terminal.

Conclusion

Unit testing in Solidity with Foundry is a game-changer for smart contract development. By leveraging its speed, flexibility, and advanced testing features, developers can ensure their contracts are not only functional but also optimized and secure. Foundry's approach to testing represents a significant step forward in the ongoing evolution of Solidity development practices.


© Copyright 2024 Scaleap · All rights reserved.