您如何从命令行 运行 进行测试?

How do you run tests from the command line?

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

如何从命令行执行此操作?

(注意。不编译 UnrealEngine/Engine/Build/BatchFiles/* 全面涵盖构建应用程序和编译应用程序。具体来说,假设您有 100% 乐于编译的代码,您如何启动测试套件)

--

这里有更多信息,来自最近对 4.10 的测试:

运行 来自编辑的测试:

UE4Editor Project.uproject -ExecCmds="Automation RunTests MyTest"

注意缺少 -Game 标志;这将启动编辑器并运行在编辑器控制台中成功测试。

运行游戏引擎和使用'popup log window':

UE4Editor Project.uproject -Game -ExecCmds="Automation RunTests MyTest" -log

本运行游戏处于'play'模式,弹出编辑器window;但是,日志停在:

LogAssetRegistry: FAssetRegistry took 0.0004 seconds to start up

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

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

UE4Editor Project.uproject -Game -ExecCmds="Automation RunTests MyTest" -log=Log.txt

这个 运行 游戏处于 'play' 模式,然后停止并且不再存在。

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

退出运行ning游戏后文件夹Saved/Logs不存在

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

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

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

在不同的地方也有一些建议,测试类型(例如 ATF_GameATF_Editor)对 运行 是否或可以是 [=73 有一些影响=];也许这是一个问题,但我尝试了各种组合都没有成功。

--

我已经尝试了各种组合来尝试使它正常工作,但没有成功,所以是时候赏金了。

我会接受可靠的答案:

您是指编辑器内命令行还是 Windows 命令行?

在编辑器中,您可以使用带参数的 A​​utomation 命令,例如自动化 RunAll

在Windows命令行中,您可以使用-ExecCmds指定虚幻命令参数。要 运行 项目中的所有测试:UE4Editor.exe YOURPROJECT -Game -ExecCmds="Automation RunAll"

是的,这里或问题跟踪器上没有人知道。

在对 UE4 源代码进行了一些认真的挖掘之后,这是实际的交易,我把它留给下一个无法解决这个问题的受苦者:

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

UE4Editor.exe path/to/project/TestProject.uproject
              -ExecCmds="Automation RunTests SourceTests"
              -unattended
              -nopause
              -testexit="Automation Test Queue Empty"
              -log=output.txt
              -game

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

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

WindowsNoEditor/TestProject/Saved/Logs/output.txt

~/Library/Logs/TestProject/output.txt 

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

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

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

-ExecCmds="Automation List"

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

-ExecCmds="Automation List, Automation RunAll"

对于任何仍然想知道的人,编辑器中存在一个错误,因此当它们从命令行启动时(无论是在启动时还是之后),测试列表在 运行 之前被刷新).

这意味着编辑器实际上将测试列表编译为 运行,然后由程序的另一部分刷新。然后编辑认为它已经完成了所有的测试 运行ning 并且由于没有错误,表明它们都成功了。

如果有人感兴趣,我可以post如何解决这个问题,但它引入了另一个小错误。