要在编辑器中执行此操作,请打开自动化选项卡,连接到会话并选择要运行的测试。
如何从命令行执行此操作?
(注意:不编译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_Game
、ATF_Editor
)对运行是否运行或是否可以运行有一些影响;也许这是一个问题,但我尝试过各种组合,都没有成功。
--
我尝试了各种各样的方法来实现这一点,但都没有成功,所以是时候悬赏了。
我会接受一个可靠的答案:
- 从命令行执行特定测试
- 将该测试的输出记录到文件中
没错,这里或问题跟踪器上没有人知道。
经过对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"
您是指编辑器中的命令行还是Windows命令行?
在编辑器中,您可以使用带有参数的Automation命令,例如Automation RunAll
在Windows命令行中,您可以使用-ExcCmds指定不真实的命令参数。要在项目中运行所有测试:UE4Editor.exe YOURPROJECT-Game-ExecCmds="Automation RunAll"
对于仍然想知道的人来说,编辑器中有一个错误,它使得测试列表在从命令行启动时(无论是在启动时还是之后)运行之前都会被刷新。
这意味着编辑器实际上编译了一个要运行的测试列表,然后由程序的另一部分刷新。然后,编辑器认为它已经完成了所有测试的运行,并且由于没有错误,表明它们都成功了。
如果有人感兴趣,我可以发布如何对此进行修复,但它引入了另一个小错误。