问题标签 [flexunit4]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
flash - 如何使用 FlexUnit 4 测试链表对象池?
我在 AS3 中创建了一个对象池,它使用堆栈作为其基本数据结构(使用链表实现)。我是 FlexUnit 的新手,但我真的很想对我的课程进行一些单元测试(因为在新项目中测试它们充其量是很麻烦的)。
不过,我在尝试跟踪变量时遇到了一些问题,因为我的班级成员不是公开的。我希望能够测试只影响班级成员的私有方法。(示例包括创建列表、将节点从堆栈中弹出、将节点推回堆栈等)
FlexUnit 的实践似乎表明您有一个单独的测试类,可以针对您的类运行测试方法。但是,这些类无法访问我的私有变量,我不想仅为单元测试创建 getter 和 setter。有没有解决的办法?是否可以在类本身中添加测试方法,Python 风格,而不是在测试用例类中?
如果以前有人问过这个问题,我很抱歉。我是新手;我感谢您的帮助。让我知道我是否需要用代码片段或任何东西来澄清。
编辑:我意识到我的数据结构实际上是一个堆栈,而不仅仅是一个通用链表。我已经更新了问题以反映这一点。
actionscript-3 - 测试复杂行为时是否可以在单元测试中使用多个断言?
这是我的具体情况。
我有一个将类QueryQueue
包装QueryTask
在 ArcGIS API for Flex 中的类。这使我能够轻松地将多个查询任务排队等待执行。调用QueryQueue.execute()
遍历我队列中的所有任务并调用它们的执行方法。
当所有结果都被接收和处理后,QueryQueue
将调度完成的事件。我的班级的界面非常简单。
为了使该QueryQueue.execute
方法被认为是成功的,必须发生几件事。
task.execute
必须在每个查询任务上调用一次且仅一次inProgress = true
结果待定inProgress = false
处理结果时completed
在处理结果后调度canceled
从未被调用- 队列内完成的处理正确处理和打包查询结果
我正在努力将这些测试分解为可读、合乎逻辑和可维护的测试。
从逻辑上讲,我正在测试一种状态,即成功执行状态。这表明将断言 #1 到 #6 上面的一个单元测试是正确的。
但是,测试的名称并不提供信息,因为它没有描述所有必须为真才能被视为通过测试的事情。
在线阅读(包括在这里和在programmers.stackexchange.com)有一个相当大的阵营断言单元测试应该只有一个断言(作为指导)。结果,当测试失败时,您确切地知道失败的原因(即 inProgress 未设置为 true、已完成显示多次等)。您最终可能会遇到更多(但理论上更简单、更清晰)的测试,如下所示:
这可能会导致测试中出现大量重复代码,但可以通过适当setup
的teardown
方法将其最小化。
虽然这个问题与其他问题相似,但我正在寻找这个特定场景的答案,因为我认为它很好地代表了一个复杂的单元测试场景,展示了需要验证的多个状态和行为。不幸的是,许多其他问题没有示例,或者示例没有展示复杂的状态和行为。
flex4 - FlexUnit 4 错误:adobe:TestRunnerBase
FlexUnit 4 出现错误,我无法找到解决方案。这是错误:
无法解析为组件实现。
这是我的示例应用程序(我使用的是 FlashBuilder 4 Premium,所以我假设所有必要的 SWC 都已安装):
我发现的一个想法来自 FlexUnit 支持站点,它说如果我的命名空间没有错(也没有错),那么我会丢失这个文件:FlexUnit4UIListener.swc
我正在使用 FlashBuilder 4 和 Flex 4.5.1 SDK。在我的构建路径中,我引用了这三个文件及其 SWC:
C:\Program Files\Adobe\Adobe Flash Builder 4 Plug-in\eclipse\plugins\com.adobe.flexbuilder.flexunit_4.0.1.277662\flexunitframework\libs\version4libs{Common,FlexProject, and locale/version4locale}
我的项目的 libs 文件夹中是否也需要更多 SWC?我会错过什么?
actionscript-3 - FlexUnit:我可以对文件上传进行单元测试吗?
我可以使用 FlexUnit 对文件上传和删除进行单元测试吗?这些动作是单元测试的好例子吗?
我对单元测试有点陌生,并试图弄清楚我的 UI 的哪些部分适合单元测试。
感谢您提供任何有用的提示。
actionscript-3 - 编写参数化测试失败:检索测试用例的参数时出错:导致参数化字段的值无效
我有一些单元测试需要非常大的测试数据字符串。我不想在测试本身中声明 HTML 字符串,因为这会掩盖实际测试。相反,我想为每个测试从外部资源加载这些字符串。
尽管我没有使用不同的数据集运行相同的测试,但参数化测试看起来是一个可行的解决方案;但是,我很难让以下示例正常工作。
注意:此代码基于TestNG 示例。
当我运行此测试时,我收到以下错误消息:
错误:检索测试用例的参数时出错:导致参数化字段 htmlContent 的值无效:null
关于这个问题的解决方案可能是什么?
actionscript-3 - Mock4as 与 Mockito-flex
我对 actionscript 有点陌生,但我发现自己正在研究从其他 OO 语言 (java/C#) 到 actionscript 环境的良好编程实践。我已经给了 Mock4as 和 mockito-flex 一个 purusal 并且有兴趣使用两者。
有没有人在使用这两种方法时有过好/坏的经历?
actionscript-3 - 如何使用相同的先决条件数据来测试大型应用程序的多个模块?
我正在使用 actionscript 开发自定义游戏。该应用程序有几个模块。该应用程序是数据密集型的。为了启动应用程序,您需要加载许多其他 swf、JSON 等。我不想测试 UI 位(暂时)。我要测试的是:
- 没有模块崩溃
- 我得到理智的答案
我不关心 UI 和视觉异常。
我想为模块和单独的测试类编写单独的测试套件。更有条理。
问题:
为了测试最简单的函数,我需要加载 X、Y、Z 数据。X,Y,Z 数据对所有模块都是通用的。
我如何编写不同的测试类和套件并只预加载一次数据并在整个测试中使用该数据副本。大多数数据在测试过程中不会改变。
actionscript-3 - Mockolate - 在具有相同参数的模拟上调用相同的方法,但返回不同的结果
我正在使用 Mockolate 和 flex unit 4 为我在 AS3 中的测试编写模拟。我想在具有相同参数的模拟上多次调用相同的方法,并且每次都返回不同的结果。一个基本的例子是:
这导致:
和错误:
我想要的是
并且没有例外,即测试通过。
我尝试了一些替代方案,例如:
和其他无济于事。当然,我在这里遗漏了一些简单的东西。这看起来应该很容易。
多谢你们,
西奥。
git - Adobe AIR 应用程序的 Jenkins CI 服务器设置(使用 FlexUnit4 和 GitHub 作为存储库)
我有一个用 Robotlegs 1.5.2 编写的 Adobe AIR 应用程序。使用的单元测试框架是 FlexUnit4。我已经为使用 CakePHP 2.x 和 PHPUnit 的单元测试框架编写的项目设置了 Jenkins CI。我的 Jenkins CI 服务器在 Rackspace 上的 Ubuntu 11.10 上。
我打算为 Adobe AIR 应用程序项目使用相同的 Jenkins 服务器。我正在使用 git 和 github,不打算切换到 maven。我找到了这个教程,但它看起来很吓人,而且它是在 2011 年编写的。
我想知道是否有另一种方法,或者这是最好的方法。我想详细了解如何在部署 Adobe AIR 应用程序之前在还运行 FlexUnit4 测试的 Jenkins 上设置 CI。
Adobe AIR 应用程序将部署在服务器上供人们下载。
我更喜欢那些在过去 6 个月中至少有一次设置它的经验的人的答案。
maven - 如何使 FlexUnit 的代码覆盖率与 Sonar 一起使用?
情况
我试图让Sonar显示FlexUnit从使用 Flex-Mojos 的 Maven 构建作业生成的代码覆盖率报告,但我没有运气——我得到的只是一个令人沮丧的“-”。
构建输出
结果是仪表板总是显示这个(左列):(
不,单元测试不会运行超过 90 分钟,而是 16 秒;不知道这里有什么问题)
声纳相关的控制台输出是这样的:
所以一切似乎都工作正常(除了 Cobertura 之外没有文件未找到错误,我似乎无法以任何方式摆脱它,没有解析异常等)。
构建设置
pom.xml
用于构建项目的代码如下所示:
我尝试了几种运行声纳的方法:
dynamicAnalysis=reuseReports
+mvn clean install
+mvn sonar:sonar
dynamicAnalysis=true
+mvn clean install sonar:sonar -Dmaven.test.failure.ignore=true
dynamicAnalysis=true
+mvn clean install -DskipTests=true
+mvn sonar:sonar
(<-- 不起作用:由于某种原因,在这种情况下,在 Flex-Mojos 的test-run
目标执行期间,单元测试无法运行并出现 NullPointerException)。
有没有办法在 Sonar 仪表板中显示覆盖结果?我是否需要额外的插件(Emma、Clover 等)才能显示标准 Surefire 报告的覆盖范围?是否存在阻止此功能的已知问题?难道我做错了什么?
更新
我试过用 Sonar-Runner 运行 Sonar。有趣的是,仪表板随后完全删除了代码覆盖率小部件。检查运行器的控制台输出表明运行器没有执行FlexSurefireSensor
(sonar:sonar
Maven 目标执行):
该sonar-project.properties
文件包含:
我正在运行它,mvn clean install
然后是sonar-runner
.