TDD实战(三)“井字游戏” 需求二

虫师 创建于 over 6 years 之前

最后更新: about 1 month 之前

阅读数: 1

TDD实战(三)“井字游戏” 需求二

需求2


现在处理轮到哪个玩家落子问题。

需要提供一种途径,用于判断接下来该谁落子。

将需求分成三个测试:

  • 玩家 X 先下;
  • 如果上一次是 X 下的,接下来将轮到 O 下。
  • 如果上一次是 O 下的,接下来将轮到 X 下。

测试用例1


import static org.junit.Assert.*;

……

@Test
public void givenFirstTurnWhenNextPlayerThenX(){
    assertEquals('X', ticTacToe.nextPlayer());
}

在这条用例中用到了 JUnit 的断言方法 assertEquals(),通过 nextPlayer() 判断下一个下棋的是否是 X 玩家。

实现代码1

对于当前的测试用例来说,根本不需要检查玩家 X 是否先下,因为就目前而言,只需要让 nextPlayer() 返回 X 就能让测试释通过。

在 TicTacToe 类中添加 nextPlayer() 方法。

public char nextPlayer() {
    return 'X';
}

** 执行 测试用例1 检查它是否运行通过。

测试用例2


现在需要确保让玩家轮流下,玩家 X 下棋后,应轮到玩家 O, 然后再轮到玩家 X, 以此类推:


@Test
public void givenLastTurnWasXWhenNextPlayerThenO(){
    ticTacToe.play(1,1);
    assertEquals('O', ticTacToe.nextPlayer());
}
实现代码2

如果前一次是玩家 X 下的,接下来应该轮到玩家 O。

……

private char lastPlayer = '\0';

public void play(int x, int y){
    checkAxis(x);
    checkAxis(y);
    setBox(x, y);
    lastPlayer = nextPlayer();
}

public char nextPlayer() {
    if(lastPlayer == 'X'){
        return 'O';
    }
    return 'X';
}

……

** 执行 测试用例2 检查它是否运行通过。

测试用例3


如果前一次是玩家 O 下的,接下来应该是玩家 X 下。

@Test
public void givenLastTurnWasXWhenNextPlayerThenX(){
    ticTacToe.play(1,1);
    ticTacToe.play(1,2);
    assertEquals('X', ticTacToe.nextPlayer());
}

即使什么也不做这一条用例,这个测试也可以通过。 因此它毫无用处,应用删除。

0

相关课程

webium简明教程
图文
webium简明教程

课程分类: 测试框架

开箱即用的page object模式

  • 已完结
  • 已更新8集
  • 最后更新时间: 2024-03-18 12:48:12

免费

查看详情
TestNG教程
图文
TestNG教程

课程分类: 测试框架

Java语言中最流行的测试框架了

  • 已完结
  • 已更新12集
  • 最后更新时间: 2024-03-18 12:55:14

免费

查看详情
python unittest测试框架教程
图文
python unittest测试框架教程

课程分类: 测试框架

python 自带的单元测试框架

  • 已完结
  • 已更新8集
  • 最后更新时间: 2024-03-18 12:12:46

免费

查看详情
博客合集
图文
博客合集

课程分类: 测试工具 软件测试基础

当年的一些博文

  • 已完结
  • 已更新154集
  • 最后更新时间: 2024-03-19 22:02:16

免费

查看详情
软件测试基础教程
图文
软件测试基础教程

课程分类: 软件测试基础

转码和转行必备

  • 已完结
  • 已更新9集
  • 最后更新时间: 2024-03-18 11:40:05

免费

查看详情
软件测试入门教程
图文
软件测试入门教程

课程分类: 软件测试基础

新人如何转码到软件测试

  • 已完结
  • 已更新9集
  • 最后更新时间: 2024-03-17 11:07:23

免费

查看详情