日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

『飞秋』测试驱动开发TDD系列(二)

發(fā)布時間:2025/3/15 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 『飞秋』测试驱动开发TDD系列(二) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

引言

?

  今天我們來做一個TDD的小例子。通過一個棧的實(shí)現(xiàn)來體驗(yàn)一下TDD的過程。在本系列的代碼示例中,使用VS2010作為IDE工具,NUnit作為測試輔助工具。關(guān)于NUnit的使用,在園子中已經(jīng)有很多的文章。可以搜索參考一下。推薦幾篇不錯的:

  NUnit詳細(xì)使用方法

  實(shí)踐單元測試(3)-Using NUnit

?

正文

?

1、簡介
  今天的任務(wù)就是實(shí)現(xiàn)一個棧,一個沒有邊界的棧。就是數(shù)據(jù)結(jié)構(gòu)中的棧,對棧中的元素的數(shù)量沒有限制。棧是一個LIFO(Last-Input-First-Out,后進(jìn)先出)的數(shù)據(jù)結(jié)構(gòu),先進(jìn)入棧的元素要最后出來,最后

進(jìn)入棧的元素可以現(xiàn)出來。

  棧的操作包括:Push、Pop、Top、IsEmpty。

Push,入棧,將元素放入棧中。
Pop,出棧,從棧頂返回一個元素,并且在棧中刪除它。
Top,獲取棧頂元素,不從棧中刪除元素。
IsEmpty,返回棧是否為空,是否沒有元素。
2、任務(wù)列表
根據(jù)上面的功能,寫出一個測試的列表

創(chuàng)建一個棧,驗(yàn)證IsEmpty是否為true。
Push一個元素,驗(yàn)證IsEmpty是否為false。
Push一個元素,然后進(jìn)行Pop操作,驗(yàn)證IsEmpty是否為true。
Push一個元素,記錄這個元素,進(jìn)行Pop操作,看返回的元素和剛才記錄的元素是否一致。
Push三個元素,記錄他們,一個一個的進(jìn)行Pop,驗(yàn)證他們Pop的順序是否正確。
對一個沒有元素的棧進(jìn)行Pop操作。
Push一個元素,進(jìn)行Top操作,驗(yàn)證IsEmpty是否為false。
Push一個元素,進(jìn)行Top操作,看看返回的元素是否就是Push的那個元素。
對一個沒有元素的棧進(jìn)行Top操作。
3、創(chuàng)建測試用例
  針對任務(wù)列表中的每一條,建立一個測試用例。

創(chuàng)建一個棧,驗(yàn)證IsEmpty是否為true。
?

Push一個元素,驗(yàn)證IsEmpty是否為false。
Push一個元素,然后進(jìn)行Pop操作,驗(yàn)證IsEmpty是否為true。
Push一個元素,記錄這個元素,進(jìn)行Pop操作,看返回的元素和剛才記錄的元素是否一致。
Push三個元素,記錄他們,一個一個的進(jìn)行Pop,驗(yàn)證他們Pop的順序是否正確。
對一個沒有元素的棧進(jìn)行Pop操作。
Push一個元素,進(jìn)行Top操作,驗(yàn)證IsEmpty是否為false。
Push一個元素,進(jìn)行Top操作,看看返回的元素是否就是Push的那個元素。
對一個沒有元素的棧進(jìn)行Top操作。
?

?

?

?

?

?

結(jié)論


?  下面是用來測試的Stack類和測試類的源碼。


using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace BeautyCode.TDD.ConApp{?? public? class MyStack<T>??? {?????? private List<T> elements = new List<T>();??????? public bool IsEmpty??????? {??????????? get??????????? {??????????????? return (elements.Count == 0);??????????? }??????? }??????? public void Push(T element)??????? {??????????? elements.Insert(0, element);??????? }??????? public T Pop()??????? {??????????? T top = Top();??????????? elements.RemoveAt(0);??????????? return top;??????? }??????? public T Top()??????? {??????????? if (IsEmpty)??????????????? throw new InvalidOperationException("Stack is Empty");??????????? return elements[0];??????? }??? }}??

?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NUnit.Framework;
using BeautyCode.TDD.ConApp;

namespace BeautyCode.TDD.Test1
{
??? [TestFixture]
??? public class MyStackTest
??? {
??????? private MyStack<string> _myStack = null;

??????? [SetUp]
??????? public void Init()
??????? {
???????????? _myStack? = new MyStack<string >();
??????? }

??????? [Test]
??????? public void Empty()
??????? {
??????????? Assert.IsTrue(_myStack .IsEmpty);
??????? }

??????? [Test]
??????? public void PushOne()
??????? {
??????????? _myStack.Push("first element");
??????????? Assert.IsFalse(_myStack.IsEmpty,
??????????????? "After Push, IsEmpty should be false");
??????? }

??????? [Test]
??????? public void Pop()
??????? {
??????????? _myStack.Push("first element");
??????????? _myStack.Pop();
??????????? Assert.IsTrue(_myStack.IsEmpty,
??????????????? "After Push - Pop, IsEmpty should be true");
??????? }

??????? [Test]
??????? public void PushPopContentCheck()
??????? {
??????????? string? expected = "1234";
??????????? _myStack.Push(expected);
??????????? string? actual = _myStack.Pop();
??????????? Assert.AreEqual(expected, actual);
??????? }

??????? [Test]
??????? public void PushPopMultipleElements()
??????? {
??????????? string pushed1 = "1";
??????????? _myStack.Push(pushed1);
??????????? string pushed2 = "2";
??????????? _myStack.Push(pushed2);
??????????? string pushed3 = "3";
??????????? _myStack.Push(pushed3);

??????????? string popped = (string)_myStack.Pop();
??????????? Assert.AreEqual(pushed3, popped);
??????????? popped = (string)_myStack.Pop();
??????????? Assert.AreEqual(pushed2, popped);
??????????? popped = (string)_myStack.Pop();
??????????? Assert.AreEqual(pushed1, popped);
??????? }

??????? [Test]
??????? [ExpectedException(typeof(InvalidOperationException))]
??????? public void PopEmpty_myStack()
??????? {
??????????? _myStack.Pop();
??????? }

??????? [Test]
??????? public void PushTop()
??????? {
??????????? _myStack.Push("42");
??????????? _myStack.Top();
??????????? Assert.IsFalse(_myStack.IsEmpty);
??????? }

??????? [Test]
??????? public void PushTopContentCheckOneElement()
??????? {
??????????? string pushed = "42";
??????????? _myStack.Push(pushed);
??????????? string topped = (string)_myStack.Top();
??????????? Assert.AreEqual(pushed, topped);
??????? }

??????? [Test]
??????? public void PushTopContentCheckMultiples()
??????? {
??????????? string pushed3 = "3";
??????????? _myStack.Push(pushed3);
??????????? string pushed4 = "4";
??????????? _myStack.Push(pushed4);
??????????? string pushed5 = "5";
??????????? _myStack.Push(pushed5);

??????????? string topped = (string)_myStack.Top();
??????????? Assert.AreEqual(pushed5, topped);
??????? }

??????? [Test]
??????? public void PushTopNo_myStackStateChange()
??????? {
??????????? string pushed = "44";
??????????? _myStack.Push(pushed);

??????????? for (int index = 0; index < 10; index++)
??????????? {
??????????????? string topped = (string)_myStack.Top();
??????????????? Assert.AreEqual(pushed, topped);
??????????? }
??????? }

??????? [Test]
??????? [ExpectedException(typeof(InvalidOperationException))]
??????? public void TopEmpty_myStack()
??????? {
??????????? _myStack.Top();
??????? }

??????? [Test]
??????? public void PushNull()
??????? {
??????????? _myStack.Push(null);
??????????? Assert.IsFalse(_myStack.IsEmpty);
??????? }

??????? [Test]
??????? public void PushNullCheckPop()
??????? {
??????????? _myStack.Push(null);
??????????? Assert.IsNull(_myStack.Pop());
??????????? Assert.IsTrue(_myStack.IsEmpty);
??????? }

??????? [Test]
??????? public void PushNullCheckTop()
??????? {
??????????? _myStack.Push(null);
??????????? Assert.IsNull(_myStack.Top());
??????????? Assert.IsFalse(_myStack.IsEmpty);
??????? }


??? }
}

?

飛秋官網(wǎng):http://www.freeeim.com/

總結(jié)

以上是生活随笔為你收集整理的『飞秋』测试驱动开发TDD系列(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲天堂女人 | 91影院在线观看 | 麻豆传媒网 | 亚洲+小说+欧美+激情+另类 | 亚洲av综合色区 | 亚洲永久免费视频 | 欧美一级色图 | 午夜一级大片 | 伊人av网 | 丝袜天堂 | 久久伊人免费 | 人妻丰满熟妇av无码区hd | 欧美做受喷浆在线观看 | 寡妇av| 精品人妻无码专区在线 | 久久久久久久久影院 | 久久久.www | 国产精品91视频 | 国产精品mm | 国产三级国产精品国产国在线观看 | 久久77777 | 国产精品成人Av | 亚洲少妇一区二区三区 | 久草视频免费看 | 日韩大片在线 | 六月婷婷激情网 | 国产精品中文字幕在线观看 | 免费无遮挡无码永久在线观看视频 | 亚洲天堂毛片 | 久热精品视频 | 在线看片一区二区 | 中文字幕一区二区人妻痴汉电车 | 国产乱码一区二区三区 | 午夜激情毛片 | 日韩精品免费一区二区三区 | 久久久久久久久久久网站 | 免费观看污视频 | 自拍视频一区 | 青青草原在线免费 | 欧洲金发美女大战黑人 | 黄色电影在线视频 | 欧美综合色区 | 日韩成人动漫在线观看 | 欧美自拍视频在线观看 | 中文在线а√天堂官网 | 国产婷婷一区二区三区久久 | 色综合视频 | 久久免费观看视频 | √天堂中文官网8在线 | 姐姐的秘密韩剧免费观看全集中文 | 免费毛片视频网站 | 久久久久国产免费 | www.午夜激情| 短裙公车被强好爽h吃奶视频 | 青青草原伊人网 | 影音先锋成人资源网站 | 中国一级特黄毛片大片 | 无码乱人伦一区二区亚洲 | 韩国性猛交╳xxx乱大交 | 91娇羞白丝网站 | 久久久久女人精品毛片九一 | 国产爽爽爽 | 色丁香婷婷综合久久 | 中国zzji女人高潮免费 | 午夜精品久久久久久久久久久久久蜜桃 | 久操精品在线 | av色在线 | 欧美成人性生活视频 | 丁香花高清在线观看完整动漫 | 欧美黄网站 | 色峰视频| av免费观看在线 | 神马久久午夜 | 丝袜人妻一区 | 久久久久69 | 日本午夜三级 | 国产原创麻豆 | 熟妇的味道hd中文字幕 | 在线免费小视频 | 久久综合中文字幕 | 日韩天堂网 | 免费不卡av| 狠狠操在线播放 | 色大师av一区二区三区 | 免费久久精品 | 手机看片一区二区三区 | ass亚洲肉体欣赏pics | 国产乱淫av免费 | 日韩一级片一区二区 | 91人人爱| 色天堂在线视频 | 探花国产精品一区二区 | 青草视频免费在线观看 | 人妻久久一区二区 | 久久免费电影 | 高h捆绑拘束调教小说 | 男女视频在线观看免费 | 午夜少妇久久久久久久久 | 亚洲欧美视频一区二区 |