一,对于tdd(Test-driven development)有了一定的了解,也体会到了测试的严谨性,下面列出主要的测试
1.一个随机的,不重复的四位数(千位可以为0),要分为4个步骤:
①保证这是一个数字
expect(number).not.toBeNaN();
②保证这是一个四位的
expect(number.length).toEqual(4);
③保证数字之间不重复
var not_repeated = should_not_repeated(number);
expect(not_repeated).toBeTruthy();
④保证这个数字是随机的
var is_random_number = should_one_random_number();
expect(is_random_number).toBeTruthy();
2.根据两个数字输出一个形如"?A?B"的字符串。这两个数字中有几个在相同的位置上有相同的数字则A前的"?"为几,除此之外,其他的相同的数字有几个则B前的"?"为几.例如:两个数字分别为"1236"和"1243"则应输出"2A1B"
对于这个功能如果测试所有的用例则情况太多,有点违背了测试的目的,所以可以选取边界点和几个普通的情况来测试,例如:
it("should back 4A0B when guess 1234 for 1234 ", function () {
var back_string = compare("1234", "1234")
expect(back_string).toEqual("4A0B");
});
3.集成测试:也就是说我们要把前面的功能集合在一起.因为前面已经单独做了测试,所以我在这里没有做过多的测试,例如:
it("should back 4A0B when guess right", function () {
var guess_number = localStorage.getItem("number");
expect(compare(guess_number, localStorage.number)).toEqual("4A0B");
});
4.人机交互页面:这个功能要实现用户输入一个数字,机器做出检查并给出相关的提示信息.对于这个测试要测试所有可能操作产生的反应,情况较多,例如:
it("should output 2A1B if user guess 1236 while answer is 1243 in the first time", function () {
document.getElementById("input_content").value = 1236;
localStorage.setItem("number", 1243);
document.getElementById("confirm").click();
var information = document.getElementById("guess1").textContent;
expect(information).toEqual("第1次尝试:2A1B");
})
二,具体实现方法
①如何生成一个随机的,不重复的四位数
function random_a_number() {
var numbers = [];
while(numbers.length<4){
var number = parseInt(Math.random() * 10).toString();
if(!_.contains(numbers,number)){
numbers.push(number)
}
}
return numbers[0] + numbers[1] + numbers[2] + numbers[3];
}
②怎么测一个随机数,这里一直让我很纠结,最后确定了让其循环10000次,而每个数字最多出现10次
var numbers = [];
for (var i = 0; i < 10000; i++) {
numbers.push(random_a_number())
}
var grouped_numbers = _.groupBy(numbers, function (number) {
return parseInt(number)
})
var counted_numbers = _.map(grouped_numbers, function (value, key) {
return {"number": key, "count": value.length}
})
return !_.find(counted_numbers, function (counted_number) {
return counted_number.count > 11
})
③测试页面时不能只调用点击时应该调用的函数,而是要真正的实现人机交互--点击按钮,这样不仅可以测试函数是否正确还可以测试函数与按钮是否绑定,如:
document.getElementById("confirm").click();
三,遇到的其他问题
①文字乱码:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
②github相关操作:
git reset --hard HEAD~3 //将最近3次的提交回滚
git push -f //f为force
③stringObject.substr(start,length)与stringObject.substring(start,stop)
substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。
substring() 方法用于提取字符串中介于两个指定下标之间的字符。
分享到:
相关推荐
本项目名为"python_guess_the_random_number_game",是基于Python实现的一个简单猜数字游戏。 首先,我们从项目的名称"python_guess_the_random_number_game"入手,可以推测这个游戏的核心功能是让玩家猜测一个随机...
猜数字游戏V1.0_release
猜数游戏 使用Tkinter模块进行数字猜谜游戏
创建一个名为`guess_game`的函数,它接受一个参数`guess_limit`,表示玩家最多可以猜多少次。在这个函数内,我们可以初始化猜测次数计数器和玩家的猜测: ```python def guess_game(guess_limit): target_number =...
在这个名为"Guess_The_Number_Game"的项目中,玩家需要猜测一个介于1到100之间的随机数字,并在最少的尝试次数内猜出正确答案。游戏的核心在于利用计算机的随机数生成和用户输入处理功能,这正好展示了Python编程...
6. **函数**:将游戏的不同部分封装成独立的函数,如`generate_random_number()`、`check_guess()`等,可以使代码更模块化,易于理解和维护。 7. **内存管理**:虽然在这个简单的游戏中内存管理可能不是关键,但...
游戏中首先使用随机对象产生一个1-100之间的整数,当用户单击“Start”按钮时,动态生成100个按钮,并开始计时,如果用户单击的数字小于随机数,那么被单击的按钮变为红色,并显示字符串“小”;...
以下是这个猜数字游戏的Python代码示例,保存为.py后缀的文件,例如guess_number_game.py。 python # 猜数字游戏 import random def guess_number_game(): number_to_guess = random.randint(1, 100) # 生成1...
在这个名为"React_useState_NumberGame"的项目中,我们很显然会看到一个利用`useState` Hook来构建的游戏,可能是一个数字猜谜游戏。让我们深入探讨一下这个项目可能涉及到的知识点。 首先,`useState` Hook是React...
标题 "The-game-to-guess-the-number.rar_The Number" 提示我们这是一个关于编程的游戏,具体来说是猜数字的程序,而文件"猜数游戏.c"表明这个程序是使用C语言编写的。描述中提到“用codeblock编写”,Code::Blocks...
在这个"Number guessing Game"中,通常会有一个计算机生成的随机数,然后玩家需要通过输入猜测这个数字。游戏的逻辑包括以下几个关键部分: 1. **随机数生成**:C语言中的`<stdlib.h>`库提供了`rand()`函数,用于...
7. **事件绑定与函数封装**:将游戏逻辑封装成函数,如`guessNumber()`,并在事件处理函数中调用,可以提高代码的可读性和可维护性。例如,你可能有一个`startGame()`函数用于初始化游戏状态,然后在按钮点击事件中...
本项目“C#控制台应用guess number game”是一个简单的猜数字游戏,它利用C#的基础语法和控制台交互功能,为用户带来娱乐体验。下面我们将深入探讨这个游戏的实现原理和关键知识点。 1. **基础语法与控制台输入输出...
【标题】"GuessNumber"揭示了这是一个以猜数字为主题的游戏应用,它是由Java语言编写的。在编程领域,Java是一种广泛使用的面向对象的编程语言,以其跨平台性、安全性以及强大的功能而闻名。这个程序可能旨在教授...
总结来说,开发一个基于Android的猜数字游戏,需要掌握Android应用的基本架构,熟练使用Java编程,理解UI设计和事件处理机制,以及具备一定的算法和逻辑思维能力。通过这个项目,开发者不仅能提升技术技能,还能体验...
在这个名为"Number_Guessing_Game"的项目中,我们将探讨如何使用Python来实现这样一个互动游戏。 首先,游戏的核心是生成一个随机数供玩家猜测。在Python中,我们可以使用`random`模块的`randint`函数来生成一个...
在本次的更新中,我们迎来了一款基于Java编程语言的猜数字游戏——"GuessNumber - 2.0"。这款升级版的游戏不仅保留了原有的核心玩法,还引入了新的功能,即难度选择,为用户提供更为丰富的游戏体验。下面我们将深入...
Guess_Number game = new Guess_Number(); game.initUI(); } public void initUI() { // 设置窗口标题、大小等 setTitle("猜数字游戏"); setSize(500, 300); setDefaultCloseOperation(EXIT_ON_CLOSE); ...
青叶机器人 介绍 用语言编写的Telegram Bot。 使用作为机器人基础库。 我做了一个包装程序,以轻松,快速地开发功能。... /guess_number_game : /guess_number_game /bomb_game : /bomb_game炸弹(贴纸)
在这个名为"guess-number-game.zip"的压缩包中,包含了一个用Fortran编程语言编写的猜数字游戏代码。Fortran(FORmula TRANslation)是一种经典的科学计算和工程计算领域广泛使用的高级编程语言,它的历史可以追溯到...