Java - 如何测试一些代码?

时间:2012-08-28 18:51:15

标签: java testing junit data-conversion

我不是在寻找这个问题的答案,而只是简要介绍如何做到这一点。这是一篇来自考试的问题。

它声明:用英语描述一系列测试,您可以使用这些测试来测试代码以实现NumberCoversion类。您的测试应涵盖上述定义中描述的所有条件。

我不会编写类的规范,但它包含以下内容:它必须将String作为输入和输出,接受两个参数并在数字无效时返回null等。

问题值10%所以我只需要编写一系列内容:确保构造函数只接受两个int类型的参数,而不是其他任何参数,例如:加倍或接受3个参数。

是否值得用英文/伪代码编写可能的JUnit测试方法。

这是用英语写测试的正确方法吗?

4 个答案:

答案 0 :(得分:1)

我认为目标是描述一个测试用例,该测试用例检查问题中的每个规范,同时还避免尝试测试受语言结构限制的事物(例如错误的数量/参数类型)。

答案 1 :(得分:1)

用英语描述如果你写测试你将会做什么。通常它是NumberConversion类的使用。

答案 2 :(得分:1)

根据问题,您需要用英语描述测试。我认为跳到JUnit单元测试不仅仅是被要求。如果我回答这个问题,我首先要看一下NumberConversion类给出的定义。我将描述使用有效输入的测试以及使用无效输入的测试。对于每个测试,描述如何确保NumberConversion类的行为符合预期,包括预期的错误条件。

答案 3 :(得分:1)

作为可能合适的例子......

如果规格如下:

  • 将字符串作为输入
  • 字符串可以是任意大的非负整数
  • 如果字符串不是非负整数,则抛出异常

然后我可能会回答以下问题:

  • 我会测试“42”作为输入,以检查该方法是否使用“正常”数字
  • 我会测试“0”作为输入,以检查该方法是否适用于边缘案例编号
  • 我将使用“9223372036854775808”(超过Long.MAX_VALUE 1)作为输入进行测试,以检查该方法是否使用大于Java提供的固定长度整数的数字
  • 我会测试“-1”作为输入并确保抛出异常,因为负输入无效
  • 我会测试“0xa”作为输入并确保抛出异常,因为十六进制输入无效
  • 我会测试“0.1”作为输入并确保抛出异常,因为非整数输入无效