我有一个关于tic tac toe游戏的第一个集成测试:
[TestClass]
public class FirstIntegrationTest
{
[TestMethod, TestCategory("Integration Tests")]
public void Standard_TicTacToe_Game_PlayerO_Wins()
{
IPlayer playerO = new Player();
IPlayer playerX = new Player();
Game game = new Game(playerO, playerX);
game.Start();
playerO.Play(new Point(0, 0));
playerX.Play(new Point(2, 2));
playerO.Play(new Point(1, 0));
playerX.Play(new Point(1, 2));
playerO.Play(new Point(2, 0));
Assert.IsTrue(game.IsOver);
Assert.IsTrue(playerO.HasWon);
Assert.IsFalse(playerX.HasWon);
}
}
稍后,我将添加至少另一个负责向用户显示游戏棋盘的插件。对于当前版本,我只对上面显示的内容感兴趣。
当做集成测试时(我想这是集成测试?)我应该做什么样的单元测试?为了让集成测试通过,我应该只做最小的测试吗?如果是这样,我只需要让Game
类将其第一个IPlayer
HasWon
设置为true,将第二个设置为false。如果我通过集成测试来驱动我的设计,那么单元测试到底有什么意义呢?
我的想法是,一般来说,你没有太多的集成测试。那么,我应该通过集成测试还是单元测试来驱动我的设计呢?
发布于 2010-08-13 18:37:47
算法总是最难测试的,因为为了真正确保它的工作,你必须测试所有可能的组合。实事求是地说,这取决于你来决定在哪里划线。
这里你得到的是一个高水平的验收测试。
可能的单元测试包括:
发布于 2010-08-13 18:26:14
我不把它叫做集成测试,对我来说,它更像是一个Build Verification Test。在构建之后运行的简短而基本的测试,如果组件适合的话。涉及每个模块的测试。因此,您可以测试是否可以创建玩家、创建游戏和玩脚本游戏。
集成测试将包含更多关于模块之间接口(csci)的测试。
单元测试在BAT和集成测试之后。它们确保至少编译单元中的所有公共方法都能按预期工作,并正确处理错误的输入。
所以,是的,你将会有更多的方法被单元测试覆盖。
Game类的构造函数的单元测试示例:
IPlayer playerO = new Player();
IPlayer player1 = new Player();
IPlayer player2 = new AnotherImplOfIPlayer();
Game game0 = new Game(player0, player1); // this should work
Game game1 = new Game(player0, player2); // this should work
Game game2 = new Game(null, null); // exception thrown?
Game game3 = new Game(player0, player0); // exception thrown?
单元测试验证编译单元是否正确。您已经对编译单元提出了一些要求(编写或记住),并验证了这些要求。完全独立于更高级应用程序的功能。为什么?因为您可能想要在其他项目中重用编译单元,并希望确保此编译单元是无错误的(关于单元规格)。
BVT验证构建过程是否正确和完整。它验证它是否生成了可执行的应用程序。
功能测试的目标是整个应用程序的功能需求。许多功能测试不是自动的,而是使用编写的测试脚本并由测试人员执行。
发布于 2010-08-13 18:35:13
我认为这是一个很好的集成测试,你需要对公开的公共方法的特定行为进行单元测试,也就是说,如果一个玩家玩了两次相同的运动怎么办?谁应该为这种情况不发生负责?
public void cannotPlaySameMovementTwice() {
playerO.Play(new Point(0, 0));
playerX.Play(new Point(0, 0));
// You should assert some exception result here
}
https://stackoverflow.com/questions/3475908
复制相似问题