我有一些問題爲我實現的隊列類設置了一個樣本測試。使用Visual Studio測試框架進行C++單元測試
這裏是隊列類:
Queue.h:
typedef float QueueInfoType;
QueueInfoType x;
class Queue
{
public:
Queue(){front = rear = count = 0;}
bool isEmpty();
bool isFull();
void add(QueueInfoType x);
float remove();
int numItems();
enum {MAXQUEUE = 80};
private:
QueueInfoType values[MAXQUEUE];
int front, rear, count;
};
Queue.cpp:
bool Queue::isEmpty()
{
return front == rear;
}
bool Queue::isFull()
{
return count >= MAXQUEUE;
}
void Queue::add(QueueInfoType x)
{
values[rear = (rear + 1) % MAXQUEUE] = x;
count = count + 1;
}
float Queue::remove()
{
count = count - 1;
return x = values[front = (front + 1) % MAXQUEUE];
}
int Queue::numItems()
{
return count;
}
測試方法:
[TestMethod]
void TestNumItems()
{
Queue q;
for(int i = 0; i < 20; i++)
{
q.add(i);
}
int expected = 2;
int actual = q.numItems();
Assert::AreEqual(expected, actual, "queue had: " + actual + " items");
};
我顯然錯過了一些東西,我算了當我調用add方法將一個項目添加到隊列中時,隊列永遠不會增加,但是項目會很好地添加到隊列中。
我在靜態庫中編譯我的隊列類,並在我的測試項目中添加對它的引用。
任何想法爲什麼我的隊列計數永遠不會改變?
編輯:
我創建一個圓形隊列該類具有由MAXQUEUE定義的項目的最大數量。
上面是如何定義QueueInfoType。
注:
當我改變靜態庫的可執行文件,並添加void main()
我queue.cpp並編寫代碼來測試隊列的功能,它工作得很好,並正確計算收益。當測試項目將其用作靜態庫時,是否發生了一些情況?
你可以發佈測試的輸出嗎?我有點好奇,「實際」的價值是什麼時候失敗了。 –
'失敗的TestNumItems QueueTest Assert.AreEqual失敗。預計:<2>。實際:<0>。隊列有:0個項目。「調試時,計數值永遠不會改變,但值或後面確實會改變。 – NexAddo
如何定義QueueInfoType? –