当前位置: 首页 > news >正文

网站建设江阴wordpress sdk

网站建设江阴,wordpress sdk,wordpress恢复源代码,网站建设如何记账在之前的文章中#xff0c;我描述了新的Java 2 AWS SDK#xff0c;它为调用不同AWS服务的Java客户端提供了非阻塞IO支持。 在本文中#xff0c;我将介绍一种用于单元测试AWS DynamoDB调用的方法。 有几种方法可以启动DynamoDB的本地版本– 1. AWS提供了一个DynamoDB本地 … 在之前的文章中我描述了新的Java 2 AWS SDK它为调用不同AWS服务的Java客户端提供了非阻塞IO支持。 在本文中我将介绍一种用于单元测试AWS DynamoDB调用的方法。 有几种方法可以启动DynamoDB的本地版本– 1. AWS提供了一个DynamoDB本地 2. Localstack提供了一种在本地启动大量AWS服务的方法 3. DynamoDB Local的Docker版本 4. Dynalite DynamoDB的基于节点的实现 现在可以对应用程序进行单元测试我需要能够在测试运行之前使用以下选项之一启动DynamoDB的嵌入式版本然后在测试完成后将其关闭。 我采用了三种方法 1.使用JUnit 5扩展 该扩展在内部启动AWS DynamoDB Local并在测试后将其调低。 2.使用测试容器启动Docker版本DynamoDB Local 3.使用测试容器启动DynaLite JUnit5扩展 JUnit5扩展提供了方便的挂钩点来启动 嵌入式版本的DynamoDB用于测试。 它通过将DynamoDB Local版本作为Maven依赖项来工作 dependencies {...testImplementation(com.amazonaws:DynamoDBLocal:1.11.119)... } 这种依赖关系的一个复杂之处在于存在与DynamoDB Local进行交互的本机组件dll.so等并且为了将它们放置在正确的位置我依赖于Gradle任务 task copyNativeDeps(type: Copy) {mkdir build/native-libsfrom(configurations.testCompileClasspath) {include *.dllinclude *.dylibinclude *.so}into build/native-libs }test {dependsOn copyNativeDeps } 它将本机库放在build / native-libs文件夹中扩展名在内部将此路径设置为系统属性 System.setProperty(sqlite4java.library.path, libPath.toAbsolutePath().toString()) 这是JUnit5扩展的代码库所有这些都已经连接起来-https://github.com/bijukunjummen/boot-with dynamodb / blob / master / src / test / kotlin / sample / dyn / rules / LocalDynamoExtension.kt 使用此扩展名的测试如下所示 class HotelRepoTest {companion object {RegisterExtensionJvmFieldval localDynamoExtension LocalDynamoExtension()BeforeAllJvmStaticfun beforeAll() {val dbMigrator DbMigrator(localDynamoExtension.syncClient!!)dbMigrator.migrate()}}Testfun saveHotel() {val hotelRepo DynamoHotelRepo(localDynamoExtension.asyncClient!!)val hotel Hotel(id 1, name test hotel, address test address, state OR, zip zip)val resp hotelRepo.saveHotel(hotel)StepVerifier.create(resp).expectNext(hotel).expectComplete().verify()} } 该代码可以与功能齐全的DynamoDB进行交互。 DynamoDB本地Docker的 该JUnit5扩展方法非常有效但它需要与本地二进制一个额外的依赖在被拉到一个更简洁的方法可以是使用好。 Testcontainers旋转起来DynamoDB本地下列方式的泊坞窗版本 class HotelRepoLocalDynamoTestContainerTest {Testfun saveHotel() {val hotelRepo DynamoHotelRepo(getAsyncClient(dynamoDB))val hotel Hotel(id 1, name test hotel, address test address, state OR, zip zip)val resp hotelRepo.saveHotel(hotel)StepVerifier.create(resp).expectNext(hotel).expectComplete().verify()}companion object {val dynamoDB: KGenericContainer KGenericContainer(amazon/dynamodb-local:1.11.119).withExposedPorts(8000)BeforeAllJvmStaticfun beforeAll() {dynamoDB.start()}AfterAllJvmStaticfun afterAll() {dynamoDB.stop()}fun getAsyncClient(dynamoDB: KGenericContainer): DynamoDbAsyncClient {val endpointUri http:// dynamoDB.getContainerIpAddress() : dynamoDB.getMappedPort(8000)val builder: DynamoDbAsyncClientBuilder DynamoDbAsyncClient.builder().endpointOverride(URI.create(endpointUri)).region(Region.US_EAST_1).credentialsProvider(StaticCredentialsProvider.create(AwsBasicCredentials.create(acc, sec)))return builder.build()}...} } 此代码在一个随机的未占用端口上启动DynamoDB并提供此信息以便可以使用此信息创建客户端。 根据此处报告的问题我不得不采取一些Kotlin解决方法。 使用Dynalite的 Dynalite是DynamoDB的基于javascript的实现可以使用TestContainer方法再次运行以进行测试。 但是这次已经有了Dynalite的TestContainer模块 。 我发现它不支持JUnit5并发送了Pull请求来提供此支持在迭代中可以使用原始docker镜像这就是测试的样子 class HotelRepoDynaliteTestContainerTest {Testfun saveHotel() {val hotelRepo DynamoHotelRepo(getAsyncClient(dynamoDB))val hotel Hotel(id 1, name test hotel, address test address, state OR, zip zip)val resp hotelRepo.saveHotel(hotel)StepVerifier.create(resp).expectNext(hotel).expectComplete().verify()}companion object {val dynamoDB: KGenericContainer KGenericContainer(quay.io/testcontainers/dynalite:v1.2.1-1).withExposedPorts(4567)BeforeAllJvmStaticfun beforeAll() {dynamoDB.start()val dbMigrator DbMigrator(getSyncClient(dynamoDB))dbMigrator.migrate()}AfterAllJvmStaticfun afterAll() {dynamoDB.stop()}fun getAsyncClient(dynamoDB: KGenericContainer): DynamoDbAsyncClient {val endpointUri http:// dynamoDB.getContainerIpAddress() : dynamoDB.getMappedPort(4567)val builder: DynamoDbAsyncClientBuilder DynamoDbAsyncClient.builder().endpointOverride(URI.create(endpointUri)).region(Region.US_EAST_1).credentialsProvider(StaticCredentialsProvider.create(AwsBasicCredentials.create(acc, sec)))return builder.build()}...} }结论 所有这些方法对于能够测试与DynamoDB的集成都是有用的。 我个人的喜好是使用TestContainers方法如果通过JUnit5扩展方法可以使用其他Docker代理则可以使用。 在我的github存储库中可以找到使用所有三种方法进行了完全正常工作的测试的示例– https://github.com/bijukunjummen/boot-with-dynamodb 翻译自: https://www.javacodegeeks.com/2019/01/testing-dynamodb-using-junit5.html
http://www.zqtcl.cn/news/991455/

相关文章:

  • 南昌汉邦网站建设城建局
  • 网站建设:中企动力招聘网58同城招聘发布
  • 惠州住房和建设局网站物流网站建设方案范文
  • 做网站架构需要什么步骤wordpress插件连不上
  • 网上购物网站建设规划论文国家企业网官网查询
  • 响应式网站建设推荐乐云seo2022年热点新闻事件
  • 用.net做视频网站的案例做网站需要视频衔接怎么做
  • 网站搭建规划模板wordpress博客点赞
  • 怎么在wordpress免费注册博客网站百度广告代理
  • 网站建设与管理考试怎么让网站分享有图片
  • 做渠道的网站有哪些方面广州网站建设咨询电话
  • 如何查看网站做没做竞价湘潭做网站 搜搜磐石网络
  • 郑州免费建站搭建网页平台
  • 长沙网站优化对策企业官网wordpress主题下载
  • 昆山网站设计网站建设亻金手指下拉
  • 行业数据网站建设培训网站
  • 商业设计网站推荐制作网站报价
  • 建设网站的企业邮箱红酒哪个网站做的好
  • 图片链接生成网站国外做珠宝的网站有哪些
  • 企业网站建设管理及推广手机微信网页版登录
  • 六盘水市住房和城乡建设局网站标签云wordpress
  • dedecms可以做什么网站织梦做的网站在手机上显示
  • 温州建设小学的网站吐鲁番seo快速排名
  • 翼城网站建设重庆平台网站建设多少钱
  • 短视频网站的动画是怎么做的外贸一般用什么平台
  • 北京建站开发企业网站建设平台
  • 建设网站建设什么征琴他达拉非
  • 详情页制作网站广州建设工程招标信息网
  • wordpress 响应速度慢长沙seo排名扣费
  • 网站首页二级下拉框怎么做酒店网站建设方案