【问题标题】:Specflow Testing规范流测试
【发布时间】:2015-06-11 06:17:35
【问题描述】:

这似乎是一个愚蠢的问题,但我发现自己经常遇到这个问题。

我想编写一个简单的应用程序来监视键盘上的类型以及我使用鼠标的时间,以便我可以监视计算机的使用情况和工作效率。

考虑以下小黄瓜功能:

Feature: MouseInteractionMonitoring
    In order to know when the user is at the computer
    As an interaction monitor
    I want to be able to be able to monitor when the user moves the mouse

在我看来,这似乎无法测试。

那我该怎么办?

我是否应该使用抽象层来解决这个问题,方法是编写一个单独的组件来监视鼠标移动,然后将该报告报告给用户交互模块并模拟鼠标移动组件?

如何处理上述不可测试的代码?

非常感谢您对此提供的任何建议。

【问题讨论】:

    标签: cucumber specflow gherkin


    【解决方案1】:

    答案通常是换个角度思考问题。

    例如,我认为您提到的特定功能实际上是可以测试的,因为它可以在代码中移动鼠标,并且您应该也可以触发点击事件。您必须在实际场景中非常具体:

    Scenario Outline: Should log mouse movements
    Given the computer is <status>
    When the mouse moves by more than two pixels
    Then a mouse move user interaction is logged
      Examples:
      | status |
      | idle   |
      | active |
    
    Scenario: should log left-mouse clicks
    When the mouse is left-clicked
    Then a left-click user interaction is logged
    

    ...等等

    【讨论】:

    • 但是如何在测试环境中模拟鼠标点击呢?
    • 这没有帮助...我需要知道如何在测试环境中执行此操作...也许我需要扩展我的代码以拥有鼠标监视器和用户互动课……?然后可以模拟鼠标监视器......这是正确的方法吗?
    • 我不明白 - 为什么这在测试环境中不起作用?您的意思是在您的测试真正在 TeamCity 或类似系统下运行的服务器上?如果是这样,那么它可能无论如何都会起作用(尽管你最好打开一个窗口或其他东西来阻止点击实际上做任何事情!),但你是对的,一个更好的方法可能是直接调用你所有的鼠标事件处理程序具有许多用于自动测试的不同变体,并且单独执行的测试要少得多,可能是手动测试,以证明真实的鼠标事件确实可以传递给您的处理程序。这是一种测试金字塔方法。
    • 不...我的意思是您需要模拟鼠标点击进行测试!您不能指望用户在测试运行期间开始移动鼠标并单击...对吗?
    • 哦,我明白你的意思了!谢谢!
    猜你喜欢
    • 2015-08-13
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 2012-02-06
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多