Ubuntu Truffle 创建及编译测试合约基础
2017-04-27 09:40
295 查看
Truffle:
在此声明,本文仅基于V3.2.1版本为基础,可适用于3.X版本,因为Truffle近几版改动也是较大,因此可能具有一定的时效性。目录结构:
基于我上一篇文章配置后,项目目录将会如下:app:前端界面的展示,也就是localhost:8080时所展示的界面。
build:当执行truffle migrate时,会自动将contracts里面的.sol合约文件编译成.json文件。
contracts:合约文件储存地,.sol文件。
migrations:执行truffle migrate时的一些配置。
node_modules:运行时的核心代码。
test:用于测试合约,执行命令truffle test。
创建合约:
在./contracts目录下创建一个新的合约,起名为 SimpleStorage.sol,并添加以下代码:pragma solidity ^0.4.0; contract SimpleStorage { function multiply(uint a) returns(uint d) { return a * 7; } }以上合约的意思是,随便收到一个数,并将它乘以7。
添加配置:
在./migrations目录下,打开 2_deploy_contracts.js 文件,并进行修改。在开头,添加:
var SimpleStorage = artifacts.require("./SimpleStorage.sol");在 module.exports = function(deployer) {......} 中添加:
deployer.deploy(SimpleStorage);
添加测试:
在./test目录下,新建 TestSimpleStorage.sol,用于测试上述合约。在Truffle中,可使用.js与.sol来测试合约,这里我仅使用.sol进行测试。添加以下代码:
pragma solidity ^0.4.0; import "truffle/Assert.sol"; import "truffle/DeployedAddresses.sol"; import "../contracts/SimpleStorage.sol"; contract TestSimpleStorage { uint someValue; uint value; function testmultiply(){ someValue=3; SimpleStorage aaa=SimpleStorage(DeployedAddresses.SimpleStorage()); value = aaa.multiply(someValue); uint expected = 21; Assert.equal(value, expected, "should 3*7=21"); } }
运行测试:
在项目的根目录下打开控制台,输入 testrpc ,启动testrpc :执行truffle migrate,如果以前有编译过别的乱七八糟的合约,怕环境出问题,可以使用truffle migrate --reset:
执行 truffle test,进行合约的测试,可以具体指明测试哪个,如不具体指明,则测试所有的:
这是通过测试的截图。
可以试着将TestSimpleStorage.sol中的代码稍作替换:
uint expected = 21; -->uint expected = 22;就可以看见出错的场景了:
至于.sol具体怎么编译,以上代码表达什么,这里也就不赘述了,可以去参考官方文档 http://truffleframework.com/docs/getting_started/solidity-tests。
相关文章推荐
- 【区块链】Truffle 部署 编译 测试 智能合约 的 完整实践操作
- ubuntu下C编程,编译基础
- ubuntu下C编程,编译基础
- Thrift 学习笔记1——Ubuntu环境下Thrift的安装、编译以及测试 - 张进の专栏 - 博客频道 - CSDN.NET
- Ubuntu 下GTK编译、安装、测试(转载)
- Ubuntu下GTK的安装、编译和测试
- Ubuntu下arm交叉编译环境的创建及基于s3c2410的linux2.6.22移植(一)
- 在gem5的full system下运行 alpha编译的测试程序 running gem5 on ubuntu in full system mode in alpha
- Ubuntu下GTK的安装、编译和测试
- ubuntu安装Erlide,编译安装Erlang,创建Erlide工程
- 在gem5的full system下运行 alpha编译的测试程序 running gem5 on ubuntu in full system mode in alpha
- ubuntu下C编程,编译基础
- Ubuntu 10.04 下编译交叉编译环境,编译RTEMS,测试HelloWorld程序
- Ubuntu下arm交叉编译环境的创建及基于s3c2410的linux2.6.22移植
- ubuntu下C编程,编译基础
- ubuntu下C编程,编译基础
- ubuntu下C编程,编译基础
- Ubuntu 10.04 下编译交叉编译环境,编译RTEMS,测试HelloWorld程序
- 在ubuntu下创建、编译并运行一个C++程序的过程
- 在gem5的full system下运行 x86编译的测试程序 running gem5 on ubuntu in full system mode in x86