ue4多线程测试

看大象无形第九章时,有个自动化测试,其实就是类似于boost测试,调试中,有些问题,没有说清楚,或者方法不对,我用我的理解写下过程,以免忘记了,都是套路。

 

1,测试类头文件放在public下,.cpp放在private里,要不没法测试,我这里默认了是Immdiate目录,中间文件,所以要改目录

2,按照一般类的添加方式即可,加上相关头文件,书上没有写,当然我是个好人,哈哈,所以加上,废话不多说,先上代码

头文件

#pragma once
#include "HAL/Runnable.h"

class FRunnableTestThread_ : public FRunnable
{
public:
    FRunnableTestThread_(int16 index);
    ~FRunnableTestThread_();

    virtual bool Init() override;

    virtual uint32 Run() override;

    virtual void Exit() override;
private:
    int16 _index;
};

 

实现文件

#include "../Public/FRunnableTestThread_.h"
#include "Logging/LogMacros.h"
#include "Misc/AutomationTest.h"

DEFINE_LOG_CATEGORY_STATIC(TestLog, Log, All)

FRunnableTestThread_::FRunnableTestThread_(int16 index)
{
    _index = index;
}

FRunnableTestThread_::~FRunnableTestThread_()
{
}

bool FRunnableTestThread_::Init()
{
    UE_LOG(TestLog, Log, TEXT("Thread %d init"), _index);
    return true;
}

uint32 FRunnableTestThread_::Run()
{
    UE_LOG(TestLog, Log, TEXT("Thread %d Run : 1"), _index);
    _sleep(10.0f);
    UE_LOG(TestLog, Log, TEXT("Thread %d Run : 2"), _index);
    _sleep(10.0f);
    UE_LOG(TestLog, Log, TEXT("Thread %d Run : 3"), _index);
    _sleep(10.0f);
    return 0;

}

void FRunnableTestThread_::Exit()
{
    UE_LOG(TestLog, Log, TEXT("Thread %d Exit"), _index);
}

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FFRunnableTest_, "MyTest_.PublicTest.RunnableTest", EAutomationTestFlags::EditorContext | EAutomationTestFlags::EngineFilter)

bool FFRunnableTest_::RunTest(const FString& Parameter)
{
    FRunnableThread::Create(new FRunnableTestThread_(0), TEXT("TestThread0"));
    FRunnableThread::Create(new FRunnableTestThread_(1), TEXT("TestThread0"));
    FRunnableThread::Create(new FRunnableTestThread_(2), TEXT("TestThread0"));

    return true;
}

 

3,编译并启动程序,这里和书就对上了。一步步截图

 

从这里可以看到,出现了测试名称MyTest_,这个MyTest_在哪里呢?返回去看cpp文件,IMPLEMENT_SIMPLE_AUTOMATION_TEST(FFRunnableTest_, "MyTest_.PublicTest.RunnableTest", EAutomationTestFlags::EditorContext | EAutomationTestFlags::EngineFilter)

MyTest_.PublicTest.RunnableTest",就是这个

在这项点上对勾,点击开始测试

 

可以看到,确实断点击中了测试用例的代码,输出窗口也出现了相应测试消息,

那么被测试的类中的方法到底被测试了么?再按F5运行

发现确实击中了bool FRunnableTestThread_::Init(),说明测试有效。

去掉断点,直接走完。

编辑器的信息日志显示成功测试,

输出窗口也如我们所愿,就这样吧。

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值