Je rencontre des problèmes lors de la configuration d'un exemple de test pour une classe de files d'attente que j'ai implémentée.Tests unitaires C++ avec cadre de test Visual Studio
Voici la classe de file d'attente:
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;
}
Méthode d'essai:
[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");
};
Je suis évidemment manque quelque chose, mon compte pour le la file d'attente n'est jamais incrémentée lorsque j'appelle la méthode add pour ajouter un élément à la file d'attente, mais les éléments sont bien ajoutés à la file d'attente.
Je compile ma classe de file d'attente dans une bibliothèque statique et j'y ajoute une référence dans mon projet de test.
Des idées pour lesquelles le nombre de ma file d'attente ne change jamais?
EDIT:
Je crée une file d'attente circulaire avec cette classe qui a un nombre maximal d'éléments définis par MAXQUEUE.
Ci-dessus, comment QueueInfoType est défini.
REMARQUE:
Lorsque je change la bibliothèque statique à un exécutable et ajouter void main()
à mon queue.cpp et écrire du code pour tester les fonctions de la file d'attente, il fonctionne très bien et compte des rendements correctement. Y at-il quelque chose qui se passe quand il est utilisé comme bibliothèque statique par le projet de test?
Pouvez-vous poster la sortie du test? Je suis un peu curieux de savoir quelle était la valeur de 'effective' quand elle a échoué. –
'Failed TestNumItems QueueTest Assert.AreEqual a échoué. Attendu: <2>. Réel: <0>. La queue contenait: 0 items. »Pendant le débogage, la valeur de count ne change jamais, mais la valeur ou rear change. – NexAddo
Comment 'QueueInfoType' est-il défini? –