你如何从命令行运行测试?

Dou*_*oug 14 unreal-engine4

要在编辑器中执行此操作,请打开自动化选项卡,连接到会话并选择要运行的测试.

你是如何从命令行完成的?

(注意:没有编译UnrealEngine/Engine/Build/BatchFiles/*全面涵盖了构建应用程序和编译它的过程.具体来说,假设您有100%编译的代码,那么如何关闭测试套件)

-

以下是4.10最近测试的更多信息:

从编辑器运行测试:

UE4Editor Project.uproject -ExecCmds="Automation RunTests MyTest"
Run Code Online (Sandbox Code Playgroud)

注意没有-Game旗帜; 这将启动编辑器并在编辑器控制台中成功运行测试.

运行游戏引擎并使用"弹出日志窗口":

UE4Editor Project.uproject -Game -ExecCmds="Automation RunTests MyTest" -log
Run Code Online (Sandbox Code Playgroud)

这将以"播放"模式运行游戏,弹出一个编辑器窗口; 但是,日志停在:

LogAssetRegistry: FAssetRegistry took 0.0004 seconds to start up
Run Code Online (Sandbox Code Playgroud)

......游戏永远不会关闭或执行测试.

运行游戏引擎并记录到文件:

UE4Editor Project.uproject -Game -ExecCmds="Automation RunTests MyTest" -log=Log.txt
Run Code Online (Sandbox Code Playgroud)

这将以"播放"模式运行游戏,然后停止并且永不存在.

它似乎没有运行任何测试或记录到任何文件.

Saved/Logs退出正在运行的游戏后该文件夹不存在.

在编辑器中运行,测试类型等...

请参阅:https://answers.unrealengine.com/questions/358821/hot-reload-does-not-re-compile-automation-tests.html,

测试不支持热重载; 所以这不是一个选择.

在各个地方也有一些建议,测试类型(例如ATF_Game,ATF_Editor)对运行是否运行有一些影响; 也许这是一个问题,但我尝试了所有类型的组合,但没有成功.

-

我已经尝试了各种各样的组合,试图让这个工作,没有成功,所以是时候获得赏金.

我会接受一个可靠的答案:

  • 从命令行执行特定测试
  • 将该测试的输出记录到文件中

Dou*_*oug 10

是的,没有人在这里或问题跟踪器上有任何想法.

经过对UE4源代码的一些认真挖掘,这是实际的交易,我留下来为下一个痛苦的灵魂无法解决这个问题:

要从命令行运行测试,记录输出在测试运行后退出,请使用:

UE4Editor.exe path/to/project/TestProject.uproject
              -ExecCmds="Automation RunTests SourceTests"
              -unattended
              -nopause
              -testexit="Automation Test Queue Empty"
              -log=output.txt
              -game
Run Code Online (Sandbox Code Playgroud)

在OSX上使用UE4Editor.app/Contents/MacOS/UE4Editor.

请注意,无论您提供什么,日志最终都会放在:

WindowsNoEditor/TestProject/Saved/Logs/output.txt
Run Code Online (Sandbox Code Playgroud)

要么

~/Library/Logs/TestProject/output.txt 
Run Code Online (Sandbox Code Playgroud)

请注意,对于mac,它位于项目目录之外,例如,/Users/doug/Library/Logs/TestProject.(谁认为这是个好主意?)

(参见https://wiki.unrealengine.com/Locating_Project_Logs#Game_Logs)

您可以使用以下列出自动化测试

-ExecCmds="Automation List"
Run Code Online (Sandbox Code Playgroud)

...然后解析响应以找到要运行的测试; 自动化命令可以链接,例如:

-ExecCmds="Automation List, Automation RunAll"
Run Code Online (Sandbox Code Playgroud)