美文网首页
4、添加testOption 便于单元测试

4、添加testOption 便于单元测试

作者: 陈桐Caliburn | 来源:发表于2020-04-22 16:34 被阅读0次

    gojvm目录
    1、搭建go环境
    2、cmd命令行参数解析
    3、搜索class文件
    4、添加testOption 便于单元测试
    5、解析classfile文件
    6、运行时数据区
    7、指令集
    8、解释器
    9、创建Class
    10、类加载器
    11、对象实例化new object
    12、方法调用和返回
    13 类初始化
    14、jvm支持数组
    15、jvm支持字符串-数组扩展
    16、本地方法调用
    17、ClassLoader原理
    18、异常处理
    19、 启动jvm

    原因

    自己手动写java虚拟机源码,属于章回式讲课。
    实际项目,要减少冗余重复代码,让接手的人易于理解
    也要有单元测试类,便于项目重构
    因此添加testOption

    测试参数

    增加 -test

    type Cmd struct {
        testOption  string  // 指定测试方法
    }
    
    func parseCmd() *Cmd {
        //增加测试方法
        flag.StringVar(&cmd.testOption, "test", "", "test")
    }
    

    main函数调用
    根据cmd.testOption内容判断调用测试方法

    func main() {
        cmd := parseCmd()
    
        if cmd.versionFlag {
            fmt.Println("version 0.0.1")
        } else if cmd.helpFlag || cmd.class == "" {
            printUsage()
        } else if cmd.testOption == "cmd" {
            parseCmdLine(cmd)
        } else if cmd.testOption == "classpath" {
            parseClasspath(cmd)
        } else {
            startJvm(cmd)
        }
    
    }
    

    测试shell脚本

    #!/bin/sh
    set -ex
    
    cd ./go
    export GOPATH=$PWD
    #main 编译目录
    go run main -version
    //测试 命令行功能
    go run main -test "cmd" 12 344 567
    //测试类查找功能
    go run main -test "classpath" java.lang.Object
    

    实战项目地址

    https://github.com/yinlingchaoliu/jvmgo.git

    相关文章

      网友评论

          本文标题:4、添加testOption 便于单元测试

          本文链接:https://www.haomeiwen.com/subject/wgxwihtx.html