V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
ysmood
V2EX  ›  Go 编程语言

新一代的 golang 测试库

  •  2
     
  •   ysmood ·
    ysmood · 2022-04-25 18:39:55 +08:00 · 4349 次点击
    这是一个创建于 970 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目地址 https://github.com/ysmood/got

    用 golang 的朋友如果写测试的话基本都知道 testify ,但是其存在诸多多年未解决的问题,使用的体验比较原始。我在开发一个更加现代的测试框架,现在基本的框架已经成型,希望能有更多感兴趣的小伙伴能加入到项目里来改进它的特性。

    这个项目没有任何依赖,非常轻量,很适合想学习 golang 的朋友阅读它的源代码,比如反射,diff 算法。

    下面这个链接是和 testify 的简单比较:

    https://github.com/ysmood/got/discussions/7

    25 条回复    2022-04-27 17:43:13 +08:00
    Muninn
        1
    Muninn  
       2022-04-25 19:09:15 +08:00
    star 了支持下
    有闲心搞这么基础的东西的是大佬无疑了
    wsseo
        2
    wsseo  
       2022-04-25 19:36:15 +08:00
    试试
    twistedmeadows
        3
    twistedmeadows  
       2022-04-25 20:55:49 +08:00 via iPhone
    举手🙋🏻‍♂️,有什么容易上手的子任务可以分给我吗?只能在业余时间开发
    ysmood
        4
    ysmood  
    OP
       2022-04-25 22:03:08 +08:00
    gowk
        5
    gowk  
       2022-04-25 22:37:20 +08:00
    点进去才发现已经 Follow 过 OP 了
    ysmood
        6
    ysmood  
    OP
       2022-04-25 23:24:34 +08:00
    多谢支持
    twistedmeadows
        7
    twistedmeadows  
       2022-04-26 00:12:17 +08:00 via iPhone
    @ysmood 好的,我明天会先花点时间读下代码,合适的话我会申请把 issue assign 给我
    ysmood
        8
    ysmood  
    OP
       2022-04-26 07:33:16 +08:00
    @twistedmeadows OK ,有问题的话可以直接在 issue 里问。
    njutree
        9
    njutree  
       2022-04-26 08:20:50 +08:00
    Mistwave
        10
    Mistwave  
       2022-04-26 09:00:44 +08:00 via iPhone
    看起来不错 等会试试
    lbp0200
        11
    lbp0200  
       2022-04-26 10:59:18 +08:00
    goland 支持吗?
    ysmood
        12
    ysmood  
    OP
       2022-04-26 11:14:26 +08:00
    @lbp0200 支持
    chaodada
        13
    chaodada  
       2022-04-26 14:07:26 +08:00
    谢谢 学习一下
    njutree
        14
    njutree  
       2022-04-26 14:43:25 +08:00
    example 在 lib 下看起来挺奇怪的
    zhujq
        15
    zhujq  
       2022-04-26 15:12:05 +08:00
    学习一下
    ysmood
        16
    ysmood  
    OP
       2022-04-26 16:33:19 +08:00   ❤️ 1
    @njutree golang 在这块没有太多规范,都是三方的。我故意没用 pkg ,因为 lib 也有图书馆的意思,所有就把文档也放里面了,主要是为了减少开发时的杂音,大部分时候开发这个项目的人不关心 example 文件,所以没必要放根目录,根目录最好是放开发时最重要的东西。
    ysmood
        17
    ysmood  
    OP
       2022-04-26 16:35:53 +08:00
    @njutree 而需要读 example 的用户一般都会直接从 readme 跳转,所以也没必要放根目录。
    njutree
        18
    njutree  
       2022-04-26 16:51:05 +08:00
    lib 是图书馆... 一般默认 lib 都是放库的 package, 文档可以专门建一个 docs , examples 对与用这个库的人来说其实是挺重要的一个 folder.
    @ysmood
    ysmood
        19
    ysmood  
    OP
       2022-04-26 16:54:29 +08:00
    @njutree 一般代码库都是放 pkg ,既然我选择了 lib 就已经不一般了,lib 比 pkg 更宽泛,可能放很多非核心代码的东西,比如 docker 的配置,这个你如果放 pkg 就会显得特别奇怪,因为它不是 golang 代码。
    ysmood
        20
    ysmood  
    OP
       2022-04-26 16:56:04 +08:00
    @njutree 我这里假设的是阅读者没有任何 golang 的经验,所有文件的唯一入口点就是 readme ,只要看了它就不会有歧义了。
    njutree
        21
    njutree  
       2022-04-26 17:41:01 +08:00
    不太能理解什么都往 lib 里面扔的行为,但是 stop 我说的只是个建议.
    @ysmood
    ysmood
        22
    ysmood  
    OP
       2022-04-26 18:42:05 +08:00
    @njutree 什么都往根目录里扔不是也很奇怪吗?你这个想法以前我已经权衡过很久了,目前没有足够的动力和理由让我往根目录里塞更多的东西,实际上 golang 的设计理念是代码就是文档,理论上不应该有 example 这样的东西,还是 golang 本身设计不够优秀导致的争论点。
    tinytin
        23
    tinytin  
       2022-04-27 02:03:43 +08:00 via iPhone
    支持一下
    coosir
        24
    coosir  
       2022-04-27 17:07:03 +08:00
    @ysmood 首先赞一下 OP 的贡献。不过 lib 虽然可以看作图书馆的缩写,但在目录结构上很少这样理解吧。根目录放 docs 等比较多,当然要区分得更开可以独立出去用单独的 example 的 repo ,这样主 repo 可以更加精简清晰。这种规划也不算 golang 特有的设计问题吧
    ysmood
        25
    ysmood  
    OP
       2022-04-27 17:43:13 +08:00
    @coosir example 本来就是一个独立的 go module ,有自己的 package name ,完全可以看作是一个独立的 lib ,这样也便于日后将其独立出去解藕。

    我觉得凡事要讲道理,比如怎么做方便,更实用,而不是一味最求和别人一样。我承认放根目录可能是局部最优方案,但是我觉得放 lib 可能是全局最优方案。理由是 example 的使用频率非常低,一般人看过一次也不会再看了。而且这样也会迫使用户都从 readme 入手了解项目,保证用户不会因为不知道 docs 这种不成文的规矩而漏掉重要信息。而且可以让维护者在开发这个项目的时候减少不必要的杂音,IDE 看上去更清爽。

    > 这种规划也不算 golang 特有的设计问题吧

    我也没说是 golang 特有的,如果让我设计新语言,肯定是会先避开这种设计上的问题的。golang 已经向前走了很大一步了:将 example 作为 test 的一部分。只不过做的还不够完美。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2890 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 09:25 · PVG 17:25 · LAX 01:25 · JFK 04:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.