建造高质量的Android UI:用JetPack组成的拥抱测试驱动的开发
#设计 #tdd #android #jetpackcompose

David Watkis的封面照片Unsplash

我们如何在Android中进行UI开发,同时确保我们从设计规范编写高质量软件?测试驱动开发(TDD)是一种接近软件开发的方式,非常方便

均功能写作和错误修复。

它为开发人员提供了一条途径,请在编写之前在需要时请求更多信息 - 在案例中,也称为YAGNI(您将需要它),同时使用使用我想KISS原理(保持简单,愚蠢)?此外,TDD对于编写易于更新的代码非常有效。套件运行后,引入新测试将很简单,如果您不小心或故意决定更新软件的行为,则始终为您提供。

所以,如果我们都同意TDD是一种方式,请尝试使用JetPack撰写UI,并尝试使用JetPack组成。


计划

首先,让我们考虑移动工程师的常见情况:接收新的设计规范,以添加全新的屏幕。在此练习中,我选择了Taras MigulkoE-commerce app design from Dribbble上的出色作品。

具体来说,我们将实现物品列表的UI元素之一,如以下屏幕所示:

Image description

牢记这一点,让我们建立我们的开发环境。在这种情况下,假设此步骤已经完成了此样本的目的。

,我们将启动一个新项目。

我使用Android Studio的模板创建了一个默认项目,以进行活动 +组成。让我们确保我们的项目包括所有要做TDD的所需库:

最后,如果我们选择遵循测试驱动的开发(TDD)方法,那么必须记住并遵守罗伯特·C·马丁(Robert C.这些规则用作我们的开发流量函ð�撰写或更新应用程序中的任何测试时:

  1. 编写生产代码仅通过单元测试。
  2. 写的单位测试比足够失败(编译失败是故障)。
  3. 编写通过一个失败的单元测试所需的生产代码。

通过遵循这些规则,我们确保我们的发展过程保持专注和高效。


ðaction

设计规范已准备就绪并且设置了环境,因此我们如何使用测试来处理新的UI?

这将取决于用于UI的每个框架,在此示例中,我们将使用JetPack组成,因此了解如何了解Think in Compose

使用组合很容易将UI剖析成很小的小块,这些零件被描述为将其组合在一起以渲染完整的UI。

所以我们要做的第一件事就是仔细查看UI,以定义我们如何将其分开并从小到大。

乍一看,我已经确定了(至少)五个不同的组合物,它们会符合此屏幕:

  • 一个顶级动作栏,其中包括背面,名称,项目计数和过滤器动作。
  • 服装的主要清单
  • 每个服装项目
  • 服装内容内容(显示名称,价格和添加到购物车操作按钮)
  • 最喜欢的按钮

Image description

这样做已经有一些增加的价值,因为现在我们开始浮出两个可重复使用的组件,例如顶级动作栏,并且也开始考虑为我们的合成件命名,甚至没有触摸单个代码。

所以让我们继续从我们的新屏幕中选择最小的合并;最喜欢的按钮。

假设这是任何喜欢的按钮,都必须支持2个状态;充满的心和空虚的心。让我们写第一个测试:

在此阶段值得一提的是,我们将遵循有关Testing Compose的建议文档,因此我们还需要添加 ComposetEstrule 并使用其函数初始化我们的屏幕:

现在让我们的测试条件

ð´,当我们编写可复合名称(仍然不存在)时,我们会制动第二个TDD规则;该测试不再编译

Image description

要解决此问题,我们创建了一个新的Kotlin文件并编写我们的Composable

我们回到测试

Image description

¢汇编问题解决了!我们现在可能会继续编写测试

因此,测试已经准备就绪并进行编译,下一步;让我们运行

Image description

ð´我们做到了;我们现在的测试失败了。让我们遵循TDD规则1和2现在在编写任何新测试之前通过它通过。

我知道您在想什么,我们没有检查布尔值!我们不支持其他方案,我们可以编写更多代码!但是,这是您需要戴上帽子并挑选TDD帽子的确切点,如果您想进行切换并且唯一的 想:我们是否遵循所有TDD规则?是的,那还可以,让我们继续前进。

Image description

¢测试现在正在完全绿色,这意味着我们能够编写下一个测试。因此,让我们尝试其他方案我们的组合需要支持,如果isfavirite为false,则会显示空心。

ð´当我们运行它时:

Image description

因此,再次,按照TDD规则编号1和3,我们返回到我们的组合,并添加所需的逻辑以进行此测试,以使我们以前的测试这次也可以工作。

我们确保现在运行整个套件现在,以便进行两个测试:

Image description

ð¢,我们现在可以看到所有测试正在绿色!

最后,我们可以更新测试,以确保在不正确的方案中未显示其他图标。

有了所有这些,我们现在牢记我们的组合能够按照我们需要做的事情,因此我们可以在测试写作上停下通过添加其背景,颜色和正确的尺寸。

Image description

Image description


结论

您可以看到仅遵循TDD规则的3个规则,在重新征服时停止并继续前进,我们可以确保我们的UI可以按预期工作并完全覆盖如果我们希望将来对其进行更新;又称:高质量的软件。

通过将测试驱动的开发(TDD)纳入我们的开发过程中,我们消除了与编码相关的猜测,并依靠反复试验来验证功能。相反,我们的代码旨在精确地满足我们的要求。 TDD充当灯塔,指导我们编写必要的代码,同时通过周到的考虑来确定要求规范中的任何差距。

此外,正如我们已经看到的那样,在JetPack组成中实现TDD是一个简单的过程。这种方法可以在设计阶段解决任何潜在问题,从而使我们能够自信地编写用户界面(UI),因为它将在将来与业务逻辑层无缝集成。

在即将发布的帖子中,我将继续使用TDD开发整个屏幕,我鼓励您从一开始就接受TDD,而不是在制定代码后编写测试。通过这样做,您将更少编写代码,通过实施方式进行思考,并轻松确定需求中的任何丢失的组件。拥抱TDD的力量并度过美好的一天!