Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 如何加速谷歌应用引擎Go单元测试?_Performance_Unit Testing_Google App Engine_Optimization_Go - Fatal编程技术网

Performance 如何加速谷歌应用引擎Go单元测试?

Performance 如何加速谷歌应用引擎Go单元测试?,performance,unit-testing,google-app-engine,optimization,go,Performance,Unit Testing,Google App Engine,Optimization,Go,我目前正在为运行在GAE-Go上的包编写许多单元测试。讨论中的软件包主要用于保存数据并从appengine/datastore加载数据。因此,我有大约20个单元测试文件,看起来有点像这样: package Data import ( "appengine" "appengine/aetest" . "gopkg.in/check.v1" "testing" ) func TestUsers(t *testing.T) { TestingT(t) } type

我目前正在为运行在GAE-Go上的包编写许多单元测试。讨论中的软件包主要用于保存数据并从appengine/datastore加载数据。因此,我有大约20个单元测试文件,看起来有点像这样:

package Data

import (
    "appengine"
    "appengine/aetest"
    . "gopkg.in/check.v1"
    "testing"
)

func TestUsers(t *testing.T) { TestingT(t) }

type UsersSuite struct{}

var _ = Suite(&UsersSuite{})

const UserID string = "UserID"


func (s *UsersSuite) TestSaveLoad(cc *C) {
    c, err := aetest.NewContext(nil)
    cc.Assert(err, IsNil)
    defer c.Close()
    ...
因此,每个单独的测试文件似乎都在启动自己的devappserver版本:

重复20次,我的单元测试运行10分钟以上


我想知道,如何加快测试套件的执行速度?我应该只有一个文件来创建aetest.NewContext并通过它,还是因为我为每个单元测试使用了单独的套件?如何加快速度?

您可以使用自定义的
TestMain
函数:

var ctx aetest.Context

var c aetest.Context

func TestMain(m *testing.M) {
    var err error
    ctx, err = aetest.NewContext(nil)
    if err != nil {
        panic(err)
    }
    code := m.Run() // this runs the tests
    ctx.Close()
    os.Exit(code)
}

func TestUsers(t *testing.T) {
    // use ctx here
}

这样,所有测试都会启动一次dev服务器。有关TestMain的更多详细信息,请参见:。

您可以复制更多日志,尤其是占用大部分时间的部分吗?我不使用GAE,所以您应该自己调试它,但是在@EmilDavtyan中似乎有几个地方会出现15秒的超时等待,大多数日志看起来像附加的日志。只是有很多日志。我猜创建上下文的每个函数也会要求关闭上下文,所以这可能是导致它变慢的原因…为什么您要有效地测试另一个包?@freeformz我不是在测试另一个包,而是在测试一个使用appengine包的包。谢谢!这使我的测试速度提高了约100万%。