亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源單元測(cè)試工具 > cppUnit
測(cè)試驅(qū)動(dòng)開發(fā)入門-CppUnit
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2012/11/29 15:11:55 ] 推薦標(biāo)簽:

這里的TestCaller可以把從TestFixture派生而來(lái)的類的成員函數(shù)轉(zhuǎn)化為一個(gè)TestCase。這段代碼可以編譯通過(guò),運(yùn)行后一共進(jìn)行了5個(gè)測(cè)試,完全失敗。這是我們意料之中的結(jié)果,因此我們進(jìn)一步實(shí)現(xiàn)我們的功能,完成后的代碼為:

// UnitTest.cpp : Defines the entry point for the console application.
//

#include "CppUnit/TestCase.h"
#include "CppUnit/TestResult.h"
#include "CppUnit/TextOutputter.h"
#include "CppUnit/TestResultCollector.h"
#include "CppUnit/TestCaller.h"
#include "CppUnit/extensions/HelperMacros.h"

#include
#include
#include
#include

class FileStatusError
{};

class FileStatus
{
    std::string mFileName;
public:
    FileStatus(const std::string& fileName):mFileName( fileName )
    {}
    DWORD getFileSize() const
    {
        DWORD fileSize = INVALID_FILE_SIZE;
        HANDLE file = CreateFile( mFileName.c_str(), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,
            NULL, OPEN_EXISTING, 0, NULL );
        if( file != INVALID_HANDLE_VALUE )
        {
            fileSize = GetFileSize( file, NULL );
            CloseHandle( file );
        }
        if( fileSize == INVALID_FILE_SIZE )
            throw FileStatusError();
        return fileSize;
    }
    bool fileExist() const
    {
        return GetFileAttributes( mFileName.c_str() ) != INVALID_FILE_ATTRIBUTES;
    }
    void setFileModifyDate( const FILETIME* fileTime )
    {
        BOOL result = FALSE;
        HANDLE file = CreateFile( mFileName.c_str(), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,
            NULL, OPEN_EXISTING, 0, NULL );
        if( file != INVALID_HANDLE_VALUE )
        {
            result = SetFileTime( file, NULL, NULL, fileTime );

            int i = GetLastError();
            CloseHandle( file );
        }
        if( ! result )
            throw FileStatusError();
    }
    FILETIME getFileModifyDate() const
    {
        FILETIME time;
        BOOL result = FALSE;
        HANDLE file = CreateFile( mFileName.c_str(), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,
            NULL, OPEN_EXISTING, 0, NULL );
        if( file != INVALID_HANDLE_VALUE )
        {
            result = GetFileTime( file, NULL, NULL, &time );
            CloseHandle( file );
        }
        if( ! result )
            throw FileStatusError();
        return time;
    }
    std::string getFileName() const
    {
        return mFileName;
    }
};

class MyTestCase:public CPPUNIT_NS::TestFixture
{
    std::string mFileNameExist;
    std::string mFileNameNotExist;
    std::string mTestFolder;
    enum DUMMY
    {
        FILE_SIZE = 1011
    };
public:
    virtual void setUp()
    {
        mTestFolder = "c:justfortest";
        mFileNameExist = mTestFolder + "exist.dat";
        mFileNameNotExist = mTestFolder + "notexist.dat";
        if( GetFileAttributes( mTestFolder.c_str() ) != INVALID_FILE_ATTRIBUTES )
            throw std::exception( "test folder already exists" );
        if( ! CreateDirectory( mTestFolder.c_str() ,NULL ) )
            throw std::exception( "cannot create folder" );
        HANDLE file = CreateFile( mFileNameExist.c_str(), GENERIC_READ | GENERIC_WRITE,
            0, NULL, CREATE_NEW, 0, NULL );
        if( file == INVALID_HANDLE_VALUE )
            throw std::exception( "cannot create file" );
        char buffer[FILE_SIZE];
        DWORD bytesWritten;
        if( !WriteFile( file, buffer, FILE_SIZE, &bytesWritten, NULL ) ||
            bytesWritten != FILE_SIZE )
        {
            CloseHandle( file );

            throw std::exception( "cannot write file" );
        }
        CloseHandle( file );
    }
    virtual void tearDown()
    {
        if( ! DeleteFile( mFileNameExist.c_str() ) )
            throw std::exception( "cannot delete file" );
        if( ! RemoveDirectory( mTestFolder.c_str() ) )
            throw std::exception( "cannot remove folder" );
    }
    void testCtorAndGetName()
    {
        FileStatus status( mFileNameExist );
        CPPUNIT_ASSERT_EQUAL( status.getFileName(), mFileNameExist );
    }
    void testGetFileSize()
    {
        FileStatus exist( mFileNameExist );
        CPPUNIT_ASSERT_EQUAL( exist.getFileSize(), (DWORD)FILE_SIZE );
        FileStatus notExist( mFileNameNotExist );
        CPPUNIT_ASSERT_THROW( notExist.getFileSize(), FileStatusError );
    }
    void testFileExist()
    {
        FileStatus exist( mFileNameExist );
        CPPUNIT_ASSERT( exist.fileExist() );
        FileStatus notExist( mFileNameNotExist );
        CPPUNIT_ASSERT( ! notExist.fileExist() );
    }
    void testFileModifyDateBasic()
    {
        FILETIME fileTime;
        GetSystemTimeAsFileTime( &fileTime );
        FileStatus exist( mFileNameExist );
        CPPUNIT_ASSERT_NO_THROW( exist.getFileModifyDate() );
        CPPUNIT_ASSERT_NO_THROW( exist.setFileModifyDate( &fileTime ) );
        FileStatus notExist( mFileNameNotExist );
        CPPUNIT_ASSERT_THROW( exist.getFileModifyDate(), FileStatusError );
        CPPUNIT_ASSERT_THROW( exist.setFileModifyDate( &fileTime ), FileStatusError );
    }
    void testFileModifyDateEqual()
    {
        FILETIME fileTime;
        GetSystemTimeAsFileTime( &fileTime );
        FileStatus exist( mFileNameExist );
        CPPUNIT_ASSERT_NO_THROW( exist.setFileModifyDate( &fileTime ) );
        FILETIME get = exist.getFileModifyDate();
        CPPUNIT_ASSERT( CompareFileTime( &get, &fileTime ) == 0 );
    }
};

int main()
{
    CPPUNIT_NS::TestResult r;
    CPPUNIT_NS::TestResultCollector result;
    r.addListener( &result );
    CPPUNIT_NS::TestCaller testCase1( "testCtorAndGetName", MyTestCase::testCtorAndGetName );
    CPPUNIT_NS::TestCaller testCase2( "testGetFileSize", MyTestCase::testGetFileSize );
    CPPUNIT_NS::TestCaller testCase3( "testFileExist", MyTestCase::testFileExist );
    CPPUNIT_NS::TestCaller testCase4( "testFileModifyDateBasic", MyTestCase::testFileModifyDateBasic );
    CPPUNIT_NS::TestCaller testCase5( "testFileModifyDateEqual", MyTestCase::testFileModifyDateEqual );
    testCase1.run( &r );
    testCase2.run( &r );
    testCase3.run( &r );
    testCase4.run( &r );
    testCase5.run( &r );
    CPPUNIT_NS::TextOutputter out( &result, std::cout );
    out.write();
    return 0;
}

上一頁(yè)12345下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 国产无内制服肉丝精品视频 | 国产制服 国产制服一区二区 | 精品卡1卡2卡三卡免费网站 | 久久免费视频7 | 亚洲午夜剧场 | 在线免费观看亚洲视频 | 中文字幕在线免费视频 | 天天操天天射天天舔 | 亚洲综合色视频 | 一级做a免费视频观看网站 一男一女下面一进一出性视频 | 福利视频网站 | 日韩一中文字幕 | 黄色片一级毛片 | 日韩欧美一区二区中文字幕 | 精品视频一区在线观看 | www永久免费视频 | 国产日产高清欧美一区二区三区 | www.99精品视频在线播放 | 欧美视频中文字幕 | 天天拍天天干 | 日日草天天干 | 欧美日韩亚洲综合 | 久久成人激情视频 | 男人把女人下面桶爽的视频 | 国产日韩亚洲欧洲一区二区三区 | 又爽又黄又无遮挡网站 | 日韩欧美在线观看视频 | 欧美一级片黄色片 | 啪啪一级 | 狠狠综合| 直接观看黄网站免费视频 | 97福利视频精品第一导航 | 两性午夜性刺激在线观看免费 | 一区二区网站在线观看 | 免费一级黄色毛片 | 青青久久网| 好吊爽在线播放视频 | 久久夜靖品 | 无遮挡动漫黄漫网站在线观看 | 色视频在线观看视频 | 福利在线免费观看 |