- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我开始更多地了解 Roblox 时,我想知道是否有任何可能的方法来自动化测试。仅作为 Lua 脚本编写的第一步,但理想情况下还可以模拟游戏和交互。
有什么办法可以做到这样的事情吗?另外,如果已经有在 Roblox 上进行测试的最佳实践(这包括 Lua 脚本),我想了解更多有关它们的信息。
最佳答案
对于lua模块,我推荐库TestEZ 。它由 Roblox 工程师内部开发,可进行行为驱动测试。它允许您指定测试文件存在的位置,并将为您提供有关测试结果的非常详细的输出。
此示例将在 RobloxStudio 中运行,但您可以将其与其他库配对,例如 Lemur用于命令行和持续集成工作流程。无论如何,请按照以下步骤操作:
rojo build --output TestEZ.rbxm 。
TestEZ.rbxm
的新文件。TestEZ.rbxm
文件拖到世界中。它将将该库解压到同名的 ModuleScript 中。构造代码的一种常见方法是使用 ModuleScripts 中的代码类及其旁边的测试。假设您在 ModuleScript 中有一个简单的实用程序类,名为 MathUtil
local MathUtil = {}
function MathUtil.add(a, b)
assert(type(a) == "number")
assert(type(b) == "number")
return a + b
end
return MathUtil
要为此文件创建测试,请在其旁边创建一个 ModuleScript 并将其命名为 MathUtil.spec
。 此命名约定很重要,因为它允许 TestEZ 发现测试。
return function()
local MathUtil = require(script.parent.MathUtil)
describe("add", function()
it("should verify input", function()
expect(function()
local result = MathUtil.add("1", 2)
end).to.throw()
end)
it("should properly add positive numbers", function()
local result = MathUtil.add(1, 2)
expect(result).to.equal(3)
end)
it("should properly add negative numbers", function()
local result = MathUtil.add(-1, -2)
expect(result).to.equal(-3)
end)
end)
end
有关使用 TestEZ 编写测试的完整详细信息,请查看 the official documentation .
在这一步中,我们需要告诉 TestEZ 在哪里可以找到我们的测试。因此,在 ServerScriptService 中创建一个脚本:
local TestEZ = require(game.ReplicatedStorage.TestEZ)
-- add any other root directory folders here that might have tests
local testLocations = {
game.ServerStorage,
}
local reporter = TestEZ.TextReporter
--local reporter = TestEZ.TextReporterQuiet -- use this one if you only want to see failing tests
TestEZ.TestBootstrap:run(testLocations, reporter)
Test results:
[+] ServerStorage
[+] MathUtil
[+] add
[+] should properly add negative numbers
[+] should properly add positive numbers
[+] should verify input
3 passed, 0 failed, 0 skipped - TextReporter:87
不幸的是,不存在完全自动化游戏测试的方法。
您可以使用TestService创建自动测试某些交互的测试,例如玩家触摸击杀 block 或检查枪支的子弹路径。但没有公开的方式来启动游戏、记录输入和验证游戏状态。
有an internal service为此,还有一个 non-scriptable service for mocking inputs但如果不重写 CoreScripts,目前确实不可能。
关于testing - 有没有办法测试 roblox 游戏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66575540/
我是一名优秀的程序员,十分优秀!