测试自动化 2011/06/05 - 1
来源:互联网 发布:c 定义数组 编辑:程序博客网 时间:2024/05/21 10:28
读《玩转gtest》http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html
0. 杂问
一些关于测试覆盖tool的东东:http://www.cnblogs.com/coderzh/archive/2009/03/21/1418355.html
1. 事件:TestCase事件与Test事件
总结Test的组织:
* 无特殊事件处理的testcase,使用TEST(testcase-name, test-name)
* 有特殊事件处理的testcase,必须使用TEST_F(testcase-name, test-name)形式,否则,定义的事件将无法被调用
* testcase-name必须和一个特别定义的类(public testing::Test)一致,否则,编译处错如下:
FooTest.cpp:47: 错误:expected class-name before ‘{’ token
FooTest.cpp:47: 警告:‘class MyFooTest_HandleNoneZeroInput_Test’ 有虚函数却没有虚析构函数
FooTest.cpp:47: 错误:‘MyFooTest’ 在此作用域中尚未声明
注:TEST_F将会去使用类定义
* 目前MyFooTest.cpp的内容:
[root@localhost frank-study]# cat FooTest.cpp
#include <gtest/gtest.h>
#include "FooEnvironment.cpp"
extern int Foo(int, int);
class MyFooTest : public testing::Test {
protected:
static void SetUpTestCase() {
std::cout << "In TestSuite(TestCase) static setup function !" << std::endl;
}
static void TearDownTestCase() {
std::cout << "In TestSuite(TestCase) static tear down function !" << std::endl;
}
virtual void SetUp() {
std::cout << "In Test(TestCase) setup function !" << std::endl;
}
virtual void TearDown() {
std::cout << "In Test(TestCase) tear down function !" << std::endl;
}
};
TEST(FooTest, HandleNoneZeroInput) {
EXPECT_EQ(2, Foo(4,10)) << "Hi!";
EXPECT_EQ(5, Foo(30,18)) << "Hello! 1";
}
TEST(FooTest2, HandleNoneZeroInput) {
EXPECT_EQ(2, Foo(4,10));
EXPECT_EQ(6, Foo(30,18)) << "Hi ther!";
}
TEST(FooTest3, HandleZeroInput) {
EXPECT_ANY_THROW(Foo(10,0));
EXPECT_THROW(Foo(0,5), char*);
}
TEST_F(MyFooTest, HandleNoneZeroInput) {
EXPECT_EQ(2, Foo(4,10)) << "Hi!";
EXPECT_EQ(5, Foo(30,18)) << "Hello! 1";
EXPECT_EQ(5, Foo(30,18)) << "Hello! 2";
EXPECT_EQ(5, Foo(30,18)) << "Hello! 3";
}
TEST_F(MyFooTest, AnotherTest) {
EXPECT_EQ(2, Foo(4,10)) << "Hi!";
}
GTEST_API_ int main(int argc, char **argv) {
std::cout << " FRANK: Running main() from gtest_main.cc/n";
testing::AddGlobalTestEnvironment(new FooEnvironment);
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
2. 参数化
class IsPrimeParamTest : public::testing::TestWithParam<int>
{
};
TEST_P(IsPrimeParamTest, test name)
Q:类型参数化,比较复杂的???
3. 在VC6中搭建gtest-1.6环境
让VC6支持*.cc文件:http://hi.baidu.com/wayright/blog/item/286e7cc6873f7a1d9c163d3c.html
编译gtestlib.lib失败,估计和compiler对C++语言的新特性识别有关。
- 测试自动化 2011/06/05 - 1
- 测试自动化 2011/06/04 - 1
- 测试自动化 2011/06/04 - 2
- 测试自动化 2011/06/07 GMock
- 测试自动化 2011/06/09 GMock
- 测试自动化 2011/06/11 -2
- 测试自动化 2011/06/11 - 1 一个最简单的GMock测试程序HelloGMock
- TIB自动化测试快讯 -- 自动化测试空间一周精选(2011-1-9)
- UI自动化测试笔记(1)
- 自动化测试问题拾遗1
- 自动化测试感悟(1)
- android自动化测试1-Junit
- selenium 自动化测试面试1
- 自动化测试学习记录1
- Appium移动自动化测试1
- Selenium自动化测试—1
- selenium+python自动化测试(1)
- python自动化测试--接口测试+html 1
- qt creator编译问题解决
- C++类库介绍
- Ajax判断用户名是否重复、二级联动、Ajax判断密码强度
- IsPostBack介绍
- 值传递、指针传递和引用传递
- 测试自动化 2011/06/05 - 1
- MS SQL_序号生成
- iostat IO性能结果解析
- [恶搞]【2011/6/5】小龙虾个头小了 价格涨了
- CSDN死了
- VISUAL STUDIO 2008环境下的CUDA配置(cuda toolkit 4.0)
- Image实现鼠标的拖动(自己做的图片显示控件)
- .NET实现之(WebBrowser数据采集—终结篇)
- 以单词为单位反转字符串,要求不申请任何空间