草庐IT

rect-based-test

全部标签

unit-testing - 如何测试从请求主体读取错误?

我正在为golang中的http处理程序编写单元测试。在查看此代码覆盖率报告时,我遇到了以下问题:从请求中读取请求正文时,ioutil.ReadAll可能会返回一个我需要处理的错误。然而,当我为我的处理程序编写单元测试时,我不知道如何以触发此类错误的方式向我的处理程序发送请求(内容过早结束似乎不会生成此类错误,但会在解码body)。这就是我想要做的:packagedemoimport("bytes""io/ioutil""net/http""net/http/httptest""testing")funcHandlePostRequest(whttp.ResponseWriter,r*

unit-testing - Go 中的测试是并行执行还是一个一个执行?

我有一个包含单元测试的Go文件,其中一些单元测试使用一个公共(public)变量。我正在测试的代码中使用了另一个全局变量。所有这些都可能导致问题。在Go中,当我们执行位于同一文件中的测试时,它们如何运行?并行或下一个不会在前一个完成之前开始? 最佳答案 默认情况下,包内的所有测试按顺序运行。同样默认情况下,所有测试集都是并行运行的。如果您使用默认值并且有针对公共(public)持久层(如rdbms)进行测试的不同包,这可能会导致问题。如果您对这种情况有疑问,那么运行gotest./...-p1将阻止不同的测试套件同时运行。

unit-testing - Go 中的测试是并行执行还是一个一个执行?

我有一个包含单元测试的Go文件,其中一些单元测试使用一个公共(public)变量。我正在测试的代码中使用了另一个全局变量。所有这些都可能导致问题。在Go中,当我们执行位于同一文件中的测试时,它们如何运行?并行或下一个不会在前一个完成之前开始? 最佳答案 默认情况下,包内的所有测试按顺序运行。同样默认情况下,所有测试集都是并行运行的。如果您使用默认值并且有针对公共(public)持久层(如rdbms)进行测试的不同包,这可能会导致问题。如果您对这种情况有疑问,那么运行gotest./...-p1将阻止不同的测试套件同时运行。

testing - 处理模糊错误时如何保持良好的 Go 包测试覆盖率?

我试图在我的一些Go包上保持100%的代码覆盖率。这并非在任何地方都可行,即使我在构建系统上使用-integration构建标记选择了一些测试,但它应该适用于我相对独立的库包。不过,我在处理模糊错误路径的覆盖率时遇到了麻烦。这是我的一个方法示例,它是集成测试的一部分,其中有一个真实的文件系统:func(idxIndex)LoadPost(titlestring)(*PostSpec,string,error){postFolder:=strings.Replace(strings.ToLower(title),"","_",-1)spec,err:=idx.getSpec(postFo

testing - 处理模糊错误时如何保持良好的 Go 包测试覆盖率?

我试图在我的一些Go包上保持100%的代码覆盖率。这并非在任何地方都可行,即使我在构建系统上使用-integration构建标记选择了一些测试,但它应该适用于我相对独立的库包。不过,我在处理模糊错误路径的覆盖率时遇到了麻烦。这是我的一个方法示例,它是集成测试的一部分,其中有一个真实的文件系统:func(idxIndex)LoadPost(titlestring)(*PostSpec,string,error){postFolder:=strings.Replace(strings.ToLower(title),"","_",-1)spec,err:=idx.getSpec(postFo

unit-testing - 用于测试的内存文件

如何在Go中创建用于单元测试的内存文件?在Python中,我测试使用io.BytesIO读取文件或写入文件或io.StringIO.例如,要测试文件解析器,我会deftest_parse_function():infile=io.StringIO('''\line1line2line3''')parsed_contents=parse_function(infile)expected_contents=['line1','line2','line3']#orwhateverisappropriateassertparsed_contents==expected_contents与文件输

unit-testing - 用于测试的内存文件

如何在Go中创建用于单元测试的内存文件?在Python中,我测试使用io.BytesIO读取文件或写入文件或io.StringIO.例如,要测试文件解析器,我会deftest_parse_function():infile=io.StringIO('''\line1line2line3''')parsed_contents=parse_function(infile)expected_contents=['line1','line2','line3']#orwhateverisappropriateassertparsed_contents==expected_contents与文件输

git - 我可以重命名 git mergetool 中使用的 LOCAL、REMOTE 和 BASE 吗?

假设我正在将一个分支的rebaseB转移到master上,并且存在冲突。git打开默认的merge工具,输入3个文件:file.LOCAL、file.BASE、file.REMOTE(它们的命名略有不同,但LOCAL、BASE和REMOTE都在文件名中,这就是它们的区别方式).现在,根据mergetool手册页:$LOCAL被设置为包含当前分支上文件内容的临时文件的名称;$REMOTE设置为包含要merge文件内容的临时文件的名称,$BASE设置为包含merge公共(public)基础的临时文件的名称。这对我来说真的没有意义。LOCAL是分支的当前状态。我迷路的地方是BASE和REMO

git - 我可以重命名 git mergetool 中使用的 LOCAL、REMOTE 和 BASE 吗?

假设我正在将一个分支的rebaseB转移到master上,并且存在冲突。git打开默认的merge工具,输入3个文件:file.LOCAL、file.BASE、file.REMOTE(它们的命名略有不同,但LOCAL、BASE和REMOTE都在文件名中,这就是它们的区别方式).现在,根据mergetool手册页:$LOCAL被设置为包含当前分支上文件内容的临时文件的名称;$REMOTE设置为包含要merge文件内容的临时文件的名称,$BASE设置为包含merge公共(public)基础的临时文件的名称。这对我来说真的没有意义。LOCAL是分支的当前状态。我迷路的地方是BASE和REMO

git - 当我得到 "TortoiseMerge cannot be used without a base"时我该怎么办?

我在我的Windows机器上为Git使用msysgit。我安装了TortoiseGit主要是因为我喜欢TortoiseMerge和日志功能。大多数时候,当我使用gitmergetool解决merge冲突时,TortoiseMerge会正常打开并让我merge。有时,我得到“没有基础就不能使用TortoiseMerge”。我认为这意味着提到的文件需要在文本编辑器中打开才能手动merge。响应“没有基础就不能使用TortoiseMerge”错误/消息的最有效方法是什么? 最佳答案 只要没有基本文件(即两个分支之间的最后一个共同祖先的树中