如果我的测试失败,有没有办法采取某种行动? 我有一个测试,使用selenium / fluentlinium填充文本/单击按钮并断言结果。我希望能够在测试条件失败时采取行动。类似于以下内容
class TestSpecial extends Specification{
"Website should" {
"do the right thing" in new WithBrowser( webDriver = WebDriverFactory( FIREFOX ) ){
browser.$( ".xyz1" ).text( "a" )
browser.$( ".xyz2" ).click()
browser.$( ".xyz3" ).getText must equalTo( "foo" )
browser.$( ".xyz1" ).text( "b" )
browser.$( ".xyz2" ).click()
browser.$( ".xyz3" ).getText must equalTo( "bar" )
}
onFailure
{
//context remains same, so I can use browser
MySnapshotFunction.takeSnapshot( browser )
}
}
}
有没有办法让测试失败,以便我可以在catch块中创建快照?
我认为一种方法是使用以下建议:
How to do setup/teardown in specs2 when using "in new WithApplication"
创建我自己的'WithBrowser'自定义实现,在启动之前将每个测试标记为失败,并要求该实现的用户将测试标记为在测试块结束时传递。拆解代码中的自定义实现会拍摄快照。我已经开始尝试使用这种方法,但欢迎任何更好/更简单的解决方案。
答案 0 :(得分:2)
您应该能够使用android:src="@drawable..
android:background="@drawable...
特征:
Around
当我在一个失败的例子上执行它时,我会得到像
这样的跟踪import org.specs2.mutable._
import org.specs2.execute._
trait TakeSnapshot extends org.specs2.mutable.Around {
def browser: Browser
abstract override def around[R : AsResult](r: =>R) = super.around {
val result = AsResult(r)
if (!result.isSuccess) {
takeSnapshot(browser)
}
result
}
def takeSnapshot(browser: Browser) =
println("take snapshot")
}
}
// then
"do the right thing" in
new WithBrowser(webDriver=WebDriverFactory(FIREFOX)) with TakeSnapshot {
browser.$( ".xyz1" ).text( "a" )
browser.$( ".xyz2" ).click()
browser.$( ".xyz3" ).getText must equalTo( "foo" )
browser.$( ".xyz1" ).text( "b" )
browser.$( ".xyz2" ).click()
browser.$( ".xyz3" ).getText must equalTo( "bar" )
}