Test automation support:Make test cases didn't need to care about TestSuite when invoking Director::getInstance()->replaceScene.

This commit is contained in:
WenhaiLin 2015-04-09 14:59:34 +08:00
parent a378651320
commit e5bd611604
9 changed files with 14 additions and 35 deletions

View File

@ -290,14 +290,14 @@ void TestSuite::runThisTest()
{
if (!_childTestNames.empty())
{
TestController::getInstance()->setCurrTestSuite(this);
_currTestIndex = 0;
auto scene = _testCallbacks[0]();
auto testCase = getTestCase(scene);
testCase->setTestSuite(this);
testCase->setTestCaseName(_childTestNames[_currTestIndex]);
Director::getInstance()->replaceScene(scene);
}
}
@ -437,6 +437,11 @@ void TestCase::onEnter()
_titleLabel->setString(title());
_subtitleLabel->setString(subtitle());
if (_testSuite == nullptr)
{
setTestSuite(TestController::getInstance()->getCurrTestSuite());
}
if (_testSuite && _testSuite->getChildTestCount() < 2)
{
_priorTestItem->setVisible(false);

View File

@ -11,15 +11,6 @@
USING_NS_CC;
Scene* Bug1159Layer::scene()
{
auto scene = Scene::create();
auto layer = Bug1159Layer::create();
scene->addChild(layer);
return scene;
}
bool Bug1159Layer::init()
{
if (BugsTestBase::init())
@ -59,7 +50,7 @@ bool Bug1159Layer::init()
void Bug1159Layer::callBack(Ref* sender)
{
Director::getInstance()->replaceScene(TransitionPageTurn::create(1.0f, Bug1159Layer::scene(), false));
Director::getInstance()->replaceScene(TransitionPageTurn::create(1.0f, Bug1159Layer::create(), false));
}
void Bug1159Layer::onExit()

View File

@ -8,7 +8,7 @@ class Bug1159Layer : public BugsTestBase
public:
virtual bool init() override;
virtual void onExit() override;
static cocos2d::Scene* scene();
void callBack(cocos2d::Ref* sender);
CREATE_FUNC(Bug1159Layer);

View File

@ -11,20 +11,6 @@
USING_NS_CC;
Scene* Bug914Layer::scene()
{
// 'scene' is an autorelease object.
auto scene = Scene::create();
// 'layer' is an autorelease object.
auto layer = Bug914Layer::create();
// add layer as a child to scene
scene->addChild(layer);
// return the scene
return scene;
}
// on "init" you need to initialize your instance
bool Bug914Layer::init()
{
@ -81,5 +67,5 @@ void Bug914Layer::onTouchesBegan(const std::vector<Touch*>& touches, Event * eve
void Bug914Layer::restart(Ref* sender)
{
Director::getInstance()->replaceScene(Bug914Layer::scene());
Director::getInstance()->replaceScene(Bug914Layer::create());
}

View File

@ -6,7 +6,6 @@
class Bug914Layer : public BugsTestBase
{
public:
static cocos2d::Scene* scene();
virtual bool init() override;
void onTouchesMoved(const std::vector<cocos2d::Touch*>& touches, cocos2d::Event* event);

View File

@ -83,8 +83,6 @@ void GameOverLayer::gameOverDone()
{
auto director = Director::getInstance();
auto newScene = CocoStudioComponentsTest::create();
auto gameoverScene = (GameOverScene*)director->getRunningScene();
newScene->setTestSuite(gameoverScene->getTestSuite());
director->replaceScene(newScene);
}

View File

@ -83,8 +83,6 @@ void SceneController::spriteMoveFinished(Node* sender)
auto director = Director::getInstance();
auto gameOverScene = GameOverScene::create();
gameOverScene->getLayer()->getLabel()->setString("You Lose :[");
auto currScene = (CocoStudioComponentsTest*)director->getRunningScene();
gameOverScene->setTestSuite(currScene->getTestSuite());
Director::getInstance()->replaceScene(gameOverScene);
}
@ -107,8 +105,6 @@ void SceneController::increaseKillCount()
auto director = Director::getInstance();
auto gameOverScene = GameOverScene::create();
gameOverScene->getLayer()->getLabel()->setString("You Win!");
auto currScene = (CocoStudioComponentsTest*)director->getRunningScene();
gameOverScene->setTestSuite(currScene->getTestSuite());
Director::getInstance()->replaceScene(gameOverScene);
}
}

View File

@ -93,6 +93,7 @@ public:
TestController::TestController()
: _stopAutoTest(true)
, _isRunInBackground(false)
, _testSuite(nullptr)
{
_rootTestList = new (std::nothrow) RootTests;
_rootTestList->runThisTest();

View File

@ -59,6 +59,8 @@ public:
bool blockTouchBegan(cocos2d::Touch* touch, cocos2d::Event* event);
void setCurrTestSuite(TestSuite* testSuite) { _testSuite = testSuite; }
TestSuite* getCurrTestSuite() { return _testSuite; }
private:
TestController();
@ -72,6 +74,7 @@ private:
bool _isRunInBackground;
TestList* _rootTestList;
TestSuite* _testSuite;
std::thread _autoTestThread;