使用Remix-IDE进行智能合约测试

这篇文章主要介绍了使用Remix-IDE进行智能合约测试 ,文中通过代码以及文档配合进行讲解,很详细,它对在座的每个人的研究和工作具有很经典的参考价值。 如果需要,让我们与区块链资料网一起学习。

https://www.interchains.cc/23098.html

使用Remix-IDE进行智能合约测试是很好的区块链资料,他说明了区块链当中的经典原理,可以给我们提供资料,使用Remix-IDE进行智能合约测试学习起来其实是很简单的,

不多的几个较为抽象的概念也很容易理解,之所以很多人感觉使用Remix-IDE进行智能合约测试比较复杂,一方面是因为大多数的文档没有做到由浅入深地讲解,概念上没有注意先后顺序,给读者的理解带来困难

使用Remix-IDE进行智能合约测试

  • 测试
  • 智能合约
  • Solidity
  • Remix

IDE开发工具的简单使用,通过完成一个合约测试实例,快速上手Remix。

一、简介

Remix-IDE 是一个在线智能合约开发的网站,包含一些运行环境,可以在线上直接编写合约脚本,并且进行合约测试。 本文完成通过完成一个智能合约脚本的测试过程,来达到熟练掌握Remix-IDE 以及智能合约的开发以及测试的目的。

二、Remix-IDE布局

使用Remix-IDE进行智能合约测试

先简单看下界面中的每个部分有什么作用:

  1. 图标面板(IconPanel)

单击以更改哪个插件显示在侧面板中,这里面从上到下依次有: 文件浏览、切换脚本语言用Vyper、切换脚本语言用Solidity、运行换部署合约脚本、脚本的金泰分析(检测语法错误)、单元测试、插件管理

  1. 侧面板(SidePanel)

大多数(但不是全部)插件将在此处展示它的操作界面。如果你点击"文件浏览",这里会显示当前脚本文件。

  1. 主面板(MainPanel)

主要用于编辑文件。在选项卡中可以是用于IDE编译的插件或文件。

  1. 终端(显示执行结果)

您将在其中查看与GUI交互的结果。您也可以在此处运行脚本。

三、运行环境

使用Remix-IDE进行智能合约测试

RemixIDE 包含两种智能合约脚本语言环境,Solidity 和 Vyper。

如果你喜欢暗黑色的背景,你可以在这里设置: 使用Remix-IDE进行智能合约测试

四、智能合约编写

与Python类似,这两种脚本语言的 执行文件过程也基本相同。

虽然Python脚本执行为

python file_name.py

使用vyper编译脚本

vyper file_name.vy

使用solidity编译脚本

solc file_name.sol

此处,我们使用Solidity编写一个简单的智能合约,现在就算你都不理解也不要紧,后面我们会有逐行的讲解:

Solidity智能合约 (一)

pragma solidity  >=0.4.22 <0.7.0;  contract SimpleStorage {     uint storedData;      function set(uint x) public {         storedData = x;     }      function get() public view returns (uint) {         return storedData;     } } 

逐行讲解:

pragma solidity >=0.4.22 <0.7.0; //第一行就是告诉大家源代码 //使用Solidity版本大于0.4.0 //并且小于 0.7.0 contract SimpleStorage {}  // contract 说明这是一个合约 // SimpleStorage 是合约的名字,叫做“简单存储” // 这个合约实现一个功能,就是 // 用户将一个数字存储到区块链blockchain // 数据库中,其他用户可以访问   uint storedData;  // 定义一个变量 storedData   function set(uint x) public {         storedData = x;     }  // set() 函数,输入一个值 x // 把x赋值给 storedData // 完成数据的存储    function get() public view returns (uint) {         return storedData;     }  // get() 函数,没有输入值 // 直接获取变量storedData的值 // 返回storedData的值 

该合约能完成的事情并不多(由于以太坊eth构建的基础架构的原因):它能允许任何人在合约中存储一个单独的数字,并且这个数字可以被世界上任何人访问,且没有可行的办法阻止你发布这个数字。当然,任何人都可以再次调用 set ,传入不同的值,覆盖你的数字,但是这个数字仍会被存储在区块链blockchain的历史记录中。随后,我们会看到怎样施加访问限制,以确保只有你才能改变这个数字。

简单的讲: 这个智能合约帮你存一个数到区块链blockchain中。

关于测试:

如何测试这个合约是否正确,那么就看用户set(x)写入到区块链blockchain中的数字,是否与他get()到的数字x相同。就知道是否数据写入的正确无误。

五、执行智能合约

在RemixIDE 文件浏览中,点击+图标,添加一个文件Demo.sol 将上面的合约脚本代码复制到该文件中。

一般会自动编译,编译报错会爆红色信息,否则在左侧,Solidity图标处,可以看到编译成功的√对勾。 使用Remix-IDE进行智能合约测试 点击侧边栏中部署图标,进行账户地址的相关配置,就可以将智能合约部署在区块链blockchain中。

但是在这之前,也就是本文的关键,我们需要对这个脚本进行测试。即:编写智能合约测试脚本,并执行测试。

六、编写智能合约测试脚本

点击左侧,使用Remix-IDE进行智能合约测试进入单元测试。

内容如下: 使用Remix-IDE进行智能合约测试

点击Generate test file生成测试脚本。 生成的后缀是’_test’的测试文件的基本模板。 改名为Demo_test.sol,并编写如下内容进行测试:

pragma solidity >=0.4.22 <0.7.0; import "remix_tests.sol"; // this import is automatically injected by Remix. import "./Demo.sol";  contract DemoTest {      SimpleStorage simpleStorage;  //定义合约变量           function beforeAll () public {           simpleStorage = new SimpleStorage();   // 创建一个合约对象  simpleStorage      }      function checkNumberRight () public {         // 使用 set()函数设定 x数值为10 ,将其写入了simpleStorage中          simpleStorage.set(uint(10));          Assert.equal(simpleStorage.get(), uint(10), "simpleStorage == 10");     }  }

先勾选RunTests下面的测试文件,然后点击RunTests进行合约测试。

需要了解的基本的合约测试知识:

除此之外,Remix还允许使用一些特殊功能来使测试更具结构性。他们是:  beforeEach() -每次测试前运行 beforeAll() -在所有测试之前运行 afterEach() -每次测试后运行 afterAll() -在所有测试后运行

这个脚本,主要用到了beforeAll ()在测试之前来创建自己合约的对象。

七、智能合约测试

逐行解释测试脚本:

pragma solidity >=0.4.22 <0.7.0;  // 如上所述, 进行solidity 版本的设定 import "remix_tests.sol"; //引入 Remix自动测试的库 默认写即可 import "./Demo.sol";  // 重要: 引入你要测试的“智能合约”  contract DemoTest {   // 测试函数命名      SimpleStorage simpleStorage;  //定义合约变量           // 该函数在执行测试之前执行,先把你的合约创建并赋值给一个对象     function beforeAll () public {          simpleStorage = new SimpleStorage();             // 创建一个合约对象  simpleStorage     }      // 重要:测试函数     function checkNumberRight () public {         // 使用 set()函数设定 x数值为10 ,将其写入了simpleStorage中           simpleStorage.set(uint(10));          // 现在测试simpleStorage的值是否等于 你输入的值10          // 用 get()函数获取simpleStorage的值         // uint(10)  表示数字 10         // Assert.equal() 表示是否两者相等,不相等,报错提示,测试不通过         Assert.equal(simpleStorage.get(), uint(10), "simpleStorage != 10");     }  }

了解并完成了测试脚本后,并勾选了对应的文件,就可以点击RunTests运行脚本测试: 使用Remix-IDE进行智能合约测试

结果如上,则表示通过测试脚本。

八、网站地址

RemixIDE 官网

RemixIDE-中文

Solidity-文档

Vyper-文档

部分转自网络,侵权联系删除www.interchains.cchttps://www.interchains.cc/23098.html

区块链毕设网(www.interchains.cc)全网最靠谱的原创区块链毕设代做网站 部分资料来自网络,侵权联系删除! 最全最大的区块链源码站 ! QQ3039046426
区块链知识分享网, 以太坊dapp资源网, 区块链教程, fabric教程下载, 区块链书籍下载, 区块链资料下载, 区块链视频教程下载, 区块链基础教程, 区块链入门教程, 区块链资源 » 使用Remix-IDE进行智能合约测试

提供最优质的资源集合

立即查看 了解详情