项目地址 https://github.com/ysmood/got
用 golang 的朋友如果写测试的话基本都知道 testify ,但是其存在诸多多年未解决的问题,使用的体验比较原始。我在开发一个更加现代的测试框架,现在基本的框架已经成型,希望能有更多感兴趣的小伙伴能加入到项目里来改进它的特性。
这个项目没有任何依赖,非常轻量,很适合想学习 golang 的朋友阅读它的源代码,比如反射,diff 算法。
下面这个链接是和 testify 的简单比较:
![]() | 1 Muninn 2022-04-25 19:09:15 +08:00 star 了支持下 有闲心搞这么基础的东西的是大佬无疑了 |
2 wsseo 2022-04-25 19:36:15 +08:00 试试 |
3 twistedmeadows 2022-04-25 20:55:49 +08:00 via iPhone 举手♂,有什么容易上手的子任务可以分给我吗?只能在业余时间开发 |
![]() | 4 ysmood OP |
![]() | 5 gowk 2022-04-25 22:37:20 +08:00 点进去才发现已经 Follow 过 OP 了 |
![]() | 6 ysmood OP 多谢支持 |
7 twistedmeadows 2022-04-26 00:12:17 +08:00 via iPhone @ysmood 好的,我明天会先花点时间读下代码,合适的话我会申请把 issue assign 给我 |
![]() | 8 ysmood OP @twistedmeadows OK ,有问题的话可以直接在 issue 里问。 |
![]() | 9 njutree 2022-04-26 08:20:50 +08:00 赞 |
![]() | 10 Mistwave 2022-04-26 09:00:44 +08:00 via iPhone 看起来不错 等会试试 |
![]() | 11 lbp0200 2022-04-26 10:59:18 +08:00 goland 支持吗? |
13 chaodada 2022-04-26 14:07:26 +08:00 谢谢 学习一下 |
![]() | 14 njutree 2022-04-26 14:43:25 +08:00 example 在 lib 下看起来挺奇怪的 |
15 zhujq 2022-04-26 15:12:05 +08:00 学习一下 |
![]() | 16 ysmood OP ![]() @njutree golang 在这块没有太多规范,都是三方的。我故意没用 pkg ,因为 lib 也有图书馆的意思,所有就把文档也放里面了,主要是为了减少开发时的杂音,大部分时候开发这个项目的人不关心 example 文件,所以没必要放根目录,根目录最好是放开发时最重要的东西。 |
![]() | 18 njutree 2022-04-26 16:51:05 +08:00 lib 是图书馆... 一般默认 lib 都是放库的 package, 文档可以专门建一个 docs , examples 对与用这个库的人来说其实是挺重要的一个 folder. @ysmood |
![]() | 19 ysmood OP @njutree 一般代码库都是放 pkg ,既然我选择了 lib 就已经不一般了,lib 比 pkg 更宽泛,可能放很多非核心代码的东西,比如 docker 的配置,这个你如果放 pkg 就会显得特别奇怪,因为它不是 golang 代码。 |
![]() | 20 ysmood OP @njutree 我这里假设的是阅读者没有任何 golang 的经验,所有文件的唯一入口点就是 readme ,只要看了它就不会有歧义了。 |
![]() | 22 ysmood OP @njutree 什么都往根目录里扔不是也很奇怪吗?你这个想法以前我已经权衡过很久了,目前没有足够的动力和理由让我往根目录里塞更多的东西,实际上 golang 的设计理念是代码就是文档,理论上不应该有 example 这样的东西,还是 golang 本身设计不够优秀导致的争论点。 |
![]() | 23 tinytin 2022-04-27 02:03:43 +08:00 via iPhone 支持一下 |
![]() | 24 coosir 2022-04-27 17:07:03 +08:00 @ysmood 首先赞一下 OP 的贡献。不过 lib 虽然可以看作图书馆的缩写,但在目录结构上很少这样理解吧。根目录放 docs 等比较多,当然要区分得更开可以独立出去用单独的 example 的 repo ,这样主 repo 可以更加精简清晰。这种规划也不算 golang 特有的设计问题吧 |
![]() | 25 ysmood OP @coosir example 本来就是一个独立的 go module ,有自己的 package name ,完全可以看作是一个独立的 lib ,这样也便于日后将其独立出去解藕。 我觉得凡事要讲道理,比如怎么做方便,更实用,而不是一味最求和别人一样。我承认放根目录可能是局部最优方案,但是我觉得放 lib 可能是全局最优方案。理由是 example 的使用频率非常低,一般人看过一次也不会再看了。而且这样也会迫使用户都从 readme 入手了解项目,保证用户不会因为不知道 docs 这种不成文的规矩而漏掉重要信息。而且可以让维护者在开发这个项目的时候减少不必要的杂音,IDE 看上去更清爽。 > 这种规划也不算 golang 特有的设计问题吧 我也没说是 golang 特有的,如果让我设计新语言,肯定是会先避开这种设计上的问题的。golang 已经向前走了很大一步了:将 example 作为 test 的一部分。只不过做的还不够完美。 |