[英]String `matches` does not appear to work in a JSR223 Assertion
我有以下斷言代碼...
Boolean result = prev.getResponseDataAsString().matches(".*Close.*")
System.out.println(result)
if(!result){
BufferedWriter writer = null;
try{
writer = new BufferedWriter( new FileWriter("I:\\failedpayload.txt"))
writer.write(prev.getResponseDataAsString())
}
catch(Exception ex){
System.out.println(ex.getMessage())
}
finally{
writer.close()
}
// System.out.println("Response:"+prev.getResponseDataAsString());
}
AssertionResult.setFailure(!result);
測試失敗,結果最終為假。 但是,當我查看創建的文件時,會在其中看到搜索字符串。
為什么要在創建的文件中Close
而不是在創建布爾值時Close
?
最終確實可以工作...
import java.util.regex.*
...
Pattern aPattern = Pattern.compile(".*Close.*",Pattern.MULTILINE);
Matcher aMatcher = aPattern.matcher(prev.getResponseDataAsString());
Boolean result = aMatcher.find();
基本上,注釋建議的匹配項不適用於多行。
如果您想要Groovy-您可以使用匹配運算符,例如:
def text = 'I Was Close Enough'
def matcher = (text ==~ /.*Close.*/)
log.info('Matches: ' + matcher)
如果需要多行-可以使用(?m)
運算符,在Groovy中它將輸入視為多行:
更多信息:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.