18

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

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

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

--

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

从编辑器运行测试:

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

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

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

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

这会在“播放”模式下运行游戏,弹出一个编辑器窗口;但是,日志停在:

LogAssetRegistry: FAssetRegistry took 0.0004 seconds to start up

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

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

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

这会在“播放”模式下运行游戏,然后停止并且永远不会存在。

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

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

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

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

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

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

--

我已经尝试了各种尝试使这项工作发挥作用的事物组合,但没有成功,所以是时候获得赏金了。

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

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

3 回答 3

15

是的,没有人对这里或问题跟踪器有任何想法。

在对 UE4 源代码进行了一些认真的挖掘之后,这是实际的处理,我将其留给下一个无法弄清楚的受苦灵魂:

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

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"
于 2016-02-11T12:19:12.333 回答
2

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

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

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

于 2015-03-19T08:55:57.510 回答
0

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

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

如果有人感兴趣,我可以发布如何修复此问题,但它会引入另一个小错误。

于 2017-12-21T19:19:52.157 回答