星期五, 9月 30, 2016

Jenkins Cobertura Report Missing?

很久以前好不容易在 Jenkins 弄出來的 Cobertura 測試涵蓋度報表,最近再看竟然只剩頁框了?原來是因為 Content Security Policy 的緣故,要在啟動時加一個參數來避免:
  • java -Dhudson.model.DirectoryBrowserSupport.CSP= -jar jenkins.war
如果光講這個方法就不好玩了,另一個有趣的是「Manage Jenkins -> Script Console」,這裡的指令即下即行。因為測試涵蓋度報表結構上與 Java Doc 類似,所以這樣的命令也能讓報表重現:
  • System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "sandbox; default-src 'none'; img-src 'self'; style-src 'self';") // default
  • System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "default-src 'none'; img-src 'self'; style-src 'self'; child-src 'self'; frame-src 'self';") // for JavaDoc, may be working or not
  • System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "") // work if no cache
  • System.getProperty("hudson.model.DirectoryBrowserSupport.CSP") // check

星期五, 9月 23, 2016

"top" in docker container - TERM environment variable not set

在 docker 裡竟然不能用 top 觀察資源的使用情況?執行這個命令之後就好了(參考這篇):
  • export TERM=xterm

星期二, 9月 06, 2016

移植 NUnit + Selenium BDD 測試案例到 Linux 上執行

首先準備乾淨的 Linux,這次用的是 OSBoxes 的 CentOS 7。當 VM 開起來之後,要手動啟用網路、讓它自動抓時區並對時,然後檢查 Firefox 的版本,ESR 38.3 太舊了,這樣更新:
  • sudo yum install -y firefox
升級到 ESR 45.3 之後,到 Selenium 下載 geckodriver,解壓後執行,再檢查是否有程式在聆聽 4444 埠?
  • netstat -tunlp | grep 4444
若有就對了。幸好 Mono 官網近來也提供 CentOS 的支援,這裡說明非常清楚,先加入金鑰與儲存庫,再安裝 mono-devel:
  • sudo yum install yum-utils
  • sudo rpm --import "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF"
  • sudo yum-config-manager --add-repo http://download.mono-project.com/repo/centos/
  • sudo yum-install -y mono-devel
NUnit 也只是從官網下載解壓,至此萬事俱備。我的測試專案若要使用本機的瀏覽器,需如下設定:
  • RemoteWebDriverUri: http://localhost:4444
設定修改後需要重新編譯:
  • xbuild BehaviorTestSkeleton.sln
在命令列執行:
  • mono nunit3-console.exe BehaviorTestSkeleton.dll