kir*_*off 2 c++ unit-testing googletest
我想知道我是否正在测试我在此测试中列出的所有等值,或者我是否只测试第一个.
class SomethingTest : public testing::Test
{
public:
SomethingTest() { }
virtual ~SomethingTest() { }
};
TEST_F(SomethingTest, Score)
{
Computer computer;
FourInARowStrategy* strategy = new FourInARowStrategy();
vector<vector<int>> brd;
for(int i=0; i<6 ;i++)
{
vector<int> row ;
for(int j=0;j<7;j++)
row.push_back(0);
brd.push_back(row);
}
brd[5][5]=1;
brd[5][4]=2;
brd[5][3]=1;
brd[5][2]=1;
brd[5][1]=1;
brd[4][5]=2;
brd[4][4]=2;
brd[4][3]=1;
brd[4][2]=1;
brd[3][2]=2;
brd[3][1]=2;
brd[4][1]=2;
strategy->setGameBoard(brd);
strategy->displayBoard();
EXPECT_EQ(9,computer.rowScoreAPlay(2,3,3,strategy));
EXPECT_EQ(9,computer.scoreAPlay(2,3,3,strategy));
EXPECT_EQ(0,computer.colScoreAPlay(2,3,3,strategy));
EXPECT_EQ(5,computer.colScoreAPlay(1,3,3,strategy));
}
//...
}
Run Code Online (Sandbox Code Playgroud)
你有没有参考google的单元测试和良好的单元测试开发?
感谢致敬.
Fra*_*ser 14
无论是通过还是失败,您都在测试它们.这是因为你使用EXPECT_EQ而不是ASSERT_EQ.
来自文档:
当它们失败时,ASSERT_*产生致命的失败并从当前函数返回,而EXPECT_*产生非致命的失败,允许该函数继续运行.
通常,这EXPECT_*是更好的选择,因为测试的其余部分可以继续运行并且可以提供有用的输出.但是,ASSERT_*如果测试不能继续,则更好.
例如,如果您std::vector<std::string> results希望将"OK"作为第一个元素,则可以执行以下操作:
ASSERT_FALSE(results.empty()); // No point continuing if results is empty
EXPECT_EQ("OK", results[0]); // Check first element
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5648 次 |
| 最近记录: |