当前位置: 首页 > 面试题库 >

我可以创建共享的测试实用程序吗?

齐鹏程
2023-03-14
问题内容

我想知道是否可以在打包中共享测试实用程序代码。具体来说,我正在编写一个TCP服务器,该服务器将由多个处理程序用于不同的消息类型,并希望重用一组常见的测试实用程序。

主要的TCP服务器代码在mypkg/tcpserver

mypkg/tcpserver/tcp_server.go
mypkg/tcpserver/tcp_server_test.go
mypkg/tcpserver/testutils_test.go

testutils_test.go代码旨在成为一个共享库,mypkg/tcpserver其他程序包和其他程序包可使用该共享库来设置测试服务器和客户端以对其进行测试。例如,在handler子包中,我有:

mypkg/tcpserver/handler/handler.go
mypkg/tcpserver/handler/csv_handler.go
mypkg/tcpserver/handler/csv_handler_test.go
mypkg/tcpserver/handler/delim_handler.go
mypkg/tcpserver/handler/delim_handler_test.go

这些handler/*_test.go文件全部导入mypkg/tcpserver,但它们无法访问在中定义的测试实用程序mypkg/tcpserver/testutils_test.go

$ wgo test mypkg/tcpserver/handler
# mypkg/tcpserver/handler
src/mypkg/tcpserver/handler/csv_handler_test.go:37: undefined: tcpserver.CreateTestServer
src/mypkg/tcpserver/handler/csv_handler_test.go:40: undefined: tcpserver.TestSender
FAIL    mypkg/tcpserver/handler [build failed]

看来测试可以导入其他程序包,但是不能导入那些程序包中定义的测试代码?这是目的吗?如果是这样,是否有一种惯用的方式可以在所有软件包之间共享测试实用程序?


问题答案:

创建一个包含非_test.go文件中的测试实用程序的程序包。httptest和iotest是此方法的两个示例。



 类似资料:
  • 我创建了多个spring-boot测试类(使用1.4.0)。 FirstActionTest。java: 第二个动作测试。java: 运行测试时通过: 运行测试 它似乎为每个测试类创建了一个Spring测试上下文,我想这不是必需的。 问题是: 可以在多个测试类之间共享单个spring测试上下文吗?如果可以,如何共享

  • 我是DynamoDB新手,我们最近正在寻找将现有MySQL应用程序迁移到DynamoDB的选项。因为DynamoDB将每个AWS区域的表计数限制为256。我们有多个微服务,例如:订单服务、报价、产品成本计算、服务支持等。因此,现在即使对于单个客户,我们也需要创建微服务表。因此,我们很快就会达到256的上限。由于我是新手,我正在学习数据建模。是否有任何方法可以对数据库进行建模,以使其健壮,从而支持多

  • 我正在尝试查找相关的JPA文档,但很难找到任何指定是否允许我创建实体的ElementCollection的内容。我知道典型的用法是将@Embedded的@ElementCollection制作成一个@ElementCollection,但由于我遇到了一个Hibernate bug,我需要将我的可嵌入类制作成它自己的实体。 我希望实体的生命周期由父类控制。因此,我希望不要为新实体创建任何DAO/存储

  • 我的groovy脚本都在git存储库中,使用jenkins checkout SCM。其中一个groovy脚本中有一些常用函数,我想使这个groovy成为一个共享库,而无需打开jenkins并在jenkins管理表中添加共享库。 我可以使用RESTAPI或其他方法添加新库吗?

  • 问题内容: 有什么方法可以对我创建的类使用自动装箱吗?例如,我有的子类。 现在,工作完全正常,但有什么办法,使这个编译:?不会适合我的 提前致谢! 问题答案: 简而言之,没有。没有办法将其编译。 Java仅定义了一组有限的预定义拳击转换。 在JLS中,第5.1.7节: 装箱转换将原始类型的表达式转换为引用类型的对应表达式。具体来说,以下九种转换称为装箱转换: 从布尔类型到布尔类型 从字节类型到字节

  • 问题内容: 将一个SQLiteOpenHelper实例作为一个子类化Application的成员,并让需要SQLiteDatabase实例的所有Activity从一个助手中获取它,是否可以? 问题答案: 拥有一个实例可以帮助解决线程问题。由于所有线程将共享common ,因此提供了操作同步。 但是,我不会成为的子类。只需拥有一个静态数据成员即可。两种方法都使您可以从任何地方访问某些内容。但是,只有