新一代的 golang 测试库 - V2EX
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 4654 次点击
    这是一个创建于 1272 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目地址 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     Solana     888 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 20:13 PVG 04:13 LAX 13:13 JFK 16:13
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86