测试驱动开发 c++:如何将对象添加到向量中,将歌曲添加到播放列表并对其进行测试
Test Driven Development c++ : How do I add an object to a vector in terms of a song to a playlist and test it
void PlayListTester::testAddSong(){
cout << "- addSong()... " << flush;
PlayList pList("addSongTest.txt");
Song s1("Badge", "Cream", 1969);
Song s2("Godzilla", "Blue Oyster Cult", 1977);
Song s3("Behind Blue Eyes", "The Who", 1971);
pList.addSong(s1);
vector<Song> searchResult = pList.searchByArtist("Cream");
assert( searchResult.size() == 1 );
assert( searchResult[0].getTitle() == "Badge" );
assert( searchResult[0].getYear() == 1969 );
assert( searchResult[0].getArtist() == "Cream" );
cout << " 0 " << flush;
} 这是我为将 Song 对象添加到 PlayList 向量而制作的测试方法,但我的问题是它不会引发错误,而是代码在第一个断言处终止。我只是困惑是我的测试出了问题,还是我的方法本身。
vector<Song> PlayList::addSong(const Song& newSong){
vector<Song> v;
v.push_back(newSong);
return v;
这是我使用的方法。这似乎太简单了,但据我所知,理论上它应该有效。
PlayList::PlayList(const string& fileName) {
// open a stream to the playlist file
ifstream fin( fileName.c_str() );
assert( fin.is_open() );
// read each song and append it to mySongs
Song s;
string separator;
while (true) {
s.readFrom(fin);
if ( !fin ) { break; }
getline(fin, separator);
mySongs.push_back(s);
}
// close the stream
fin.close();
} 这是我的 PlayList 构造函数,如果有帮助的话。代码在大小断言处失败。
在Playlist::addSong()
方法中,您只是创建一个包含 Song 对象的矢量对象,push_back一首歌曲。在那一刻,那个矢量只有一个元素,你刚刚推送的那首歌。你返回它,但在你调用函数的方法中你没有对它做任何事情,所以向量只是被销毁并释放了它的内存。假设 Playlist 类具有保存歌曲的私有向量,则在该方法中应执行的操作是将歌曲push_back该向量上。不是你刚刚在那里创造的东西。
我认为mySongs是你最终想要包含这首歌的载体,所以它会像这样
:void PlayList::addSong(const Song& newSong) {
this->mySongs.push_back(newSong);
}
相关文章:
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 如何使用 Google Test 向测试添加元数据 / 如何将数据从 Google Test 发送到 TestEven
- 这个失败的测试是将零添加到空指针未定义的行为、编译器错误还是其他什么?
- 测试驱动开发 c++:如何将对象添加到向量中,将歌曲添加到播放列表并对其进行测试
- 如何在自动工具C++中添加提升单元测试框架
- 谷歌测试发现在macOSX上添加并运行了我的所有测试两次
- 将单元测试添加到旧解决方案时出现链接错误
- 如何在VS 2017中添加C 的单元测试
- 如何在测试中添加存根
- CMake添加(测试)可执行文件
- 如何将非托管库引用添加到 NUnit 测试
- 在BOOST test中添加测试套件而不是测试用例
- 将 XCTest 单元测试添加到现有应用不起作用
- 当大小已知时,将元素添加到向量的基准测试
- 在gtest中,如何添加库文件到可执行的测试文件
- 如何将 valgrind 测试添加到我的 cmake "test"目标
- 使用boost::filesystem添加头文件后,不再发现来自google测试的单元测试
- 我是否需要添加空测试无处不在,一旦我有移动函数
- Boost单元测试:添加辅助方法或私有函数
- 工作与现有的c++代码测试下的谷歌测试和添加Qt