구현 한 큐 클래스에 대한 샘플 테스트를 설정하는 데 문제가 있습니다.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이 정의 된 방법입니다.
참고 : 나는 실행에 정적 라이브러리를 변경하고 제 queue.cpp에 void main()
을 추가하고 큐의 기능을 테스트하는 코드를 작성할 때, 잘 작동하고 적절하게 수익을 계산
. 테스트 프로젝트가 정적 라이브러리로 사용될 때 어떤 일이 발생합니까?
테스트 결과를 게시 할 수 있습니까? 나는'실제'의 가치가 실패했을 때의 가치에 대해 좀 궁금해합니다. –
'Failed TestNumItems QueueTest Assert.AreEqual failed. 예상 : <2>. 실제 : <0>. queue has : 0 items' 디버깅하는 동안 count 값은 변경되지 않지만 값이나 후방 값은 변경됩니다. – NexAddo
'QueueInfoType'은 어떻게 정의되어 있습니까? –