Php 在进行TDD时,您到底应该测试什么

Php 在进行TDD时,您到底应该测试什么,php,android,unit-testing,junit,tdd,Php,Android,Unit Testing,Junit,Tdd,我已经读了几篇关于TDD的文章大约两个月了,我对我正在测试的东西有一个模糊的概念。我首先想到的是测试输出:例如,使用PHP作为web脚本语言,我测试我的JSON输出,以便服务器的响应是: { "id":1, "name":"Chris", "token":"5ke3k62$5%34^%k3" } 因此,如果响应与前面的JSON字符串匹配,则测试通过。我不是100%确定这就是TDD的全部内容,但这就是我所理解的 那么,让我们假设一个移动应用程序。我想制作一个hello w

我已经读了几篇关于TDD的文章大约两个月了,我对我正在测试的东西有一个模糊的概念。我首先想到的是测试输出:例如,使用
PHP
作为web脚本语言,我测试我的
JSON
输出,以便服务器的响应是:

{
    "id":1,
    "name":"Chris",
    "token":"5ke3k62$5%34^%k3"
}
因此,如果响应与前面的JSON字符串匹配,则测试通过。我不是100%确定这就是TDD的全部内容,但这就是我所理解的


那么,让我们假设一个移动应用程序。我想制作一个hello world应用程序。带有显示“Hello world”的
文本视图的
活动
。什么是测试用例,我应该测试什么。请给我一些小例子,这样我就能理解它的全部内容。

测试您希望代码做什么。如果希望代码输出json,那么编写一个测试来检查它。描述你期望代码做什么,例如

Should_return_json_response
Should_return_name
Should_provide_a_token

你说的是你希望代码在编写之前做什么。那么,如何在代码中实现这一点取决于您,只要您获得了期望的结果。

TDD指的是编写单元测试的实践。单元测试是侧重于测试小代码单元的测试。通常,您需要测试通过调用类上的公共方法所做的状态更改。测试应该覆盖该方法中的所有代码路径。如果您的单元测试依赖于跨越边界的依赖项,例如从web客户端到服务器调用数据库、电子邮件、文件系统,则测试不再是纯粹的单元测试。现在它变成了一个集成测试


我写了一篇博文,介绍了如何使用TestFirstTDD来构建测试中的代码。你可以读这篇文章。我知道代码不是PHP,但概念是一样的。kata是用php完成的。

TDD不是一种测试风格,而是一种开发风格。使用TDD:

  • 只测试一件你希望你的应用程序已经完成的事情
  • 运行测试以确保失败(以防止误报,稍后)
  • 编写尽可能少的代码,直到通过测试
  • 冲洗并重复

  • 如果您不确定如何编写测试,对于步骤1,请参阅您最喜欢的测试框架的文档。

    好的,让我们假设我想要一个带有填充的
    列表视图的
    活动。listview数据将从字符串数组资源加载。我的测试将包含哪些内容等。请解释此示例以了解我不确定您使用的是什么框架/DSL,但这里有一个抽象示例:
    test:list\u应该\u填充\u来自\u sa\u资源\n使sa\u资源[“A”、“B”、“C”]->该\u资源\n生成活动[该\u资源]->A\n希望.list\u视图与\u资源匹配\n:end\u测试
    很抱歉格式化。不确定我做错了什么:(