SORU
15 Ocak 2010, Cuma


Çalışan JavaScript ünite Sürekli bir Entegrasyon kurmak headlessly testleri

Plan Sürekli Entegrasyon sistemi üzerinde çalışan (Atlassian Bamboo 2.5) inşa bir Web uygulaması var. Her bir yapı, Javascript testleri ve Bambu test sonuçlarını yorumlamak diye QUnittabanlı bir inşa planına birim testleri JavaScript dahil etmek istiyorum.

Tercihen inşa süreci "dış sunuculara hiçbir bağlantı gerekli olacaktır." tek başına yapmak mümkün olmak istiyorum Bunu yapmak için nasıl iyi bir fikir var mı? CI sistemi oluşturma işlemi çalışan Ubuntu Linux bir sunucuda.

CEVAP
15 Ocak 2010, Cuma


Çözümü kendim bulmam yönetilen olarak, paylaşmak için iyi bir fikir olacağını düşündüm. Bu yaklaşım, kusursuz olmayabilir, ama işe yaramış gibi gözüküyor bu birincisi. Gelişmeler ve öneriler göndermek için çekinmeyin.

Ben özetle ne dedi:

  • Bir örneğini başlatınXvfbsanal bir çerçeve
  • Kullanarak JsTestDriver:
    • sanal çerçeve içine Firefox örneği (headlessly) başlatın
    • yakalamaFirefoxörnek ve test paketi çalıştırın
    • JUnit uyumlu test sonuçlar oluşturabilir .XML
  • Bambu sonuçları geçmek için dosyayı incelemesi veya başarısız oluşturmak için kullanın

Bir sonraki daha ayrıntılı aşamalardan geçer. Bu benim dizin yapısı gibi bakıyor sona erdi:

lib/
    JsTestDriver.jar
test/
    qunit/
            equiv.js
            QUnitAdapter.js
    jsTestDriver.conf
    run_js_tests.sh
    tests.js
test-reports/
build.xml

Üzerinde server kurmak:

  • Xvfb (apt-get install Xvfb) Yükleyin
  • Firefox (**5) Yükleyin

Uygulamanız inşa edilecek:

server: http://localhost:4224

load:
# Load QUnit adapters (may be omitted if QUnit is not used)
  - qunit/equiv.js
  - qunit/QUnitAdapter.js   

# Tests themselves (you'll want to add more files)
  - tests.js

Birim testleri çalıştırmak ve test sonuçlarını (örneğin Bash, run_js_tests.sh) oluşturmak için bir komut dosyası oluşturun:

#!/bin/bash
# directory to write output XML (if this doesn't exist, the results will not be generated!)
OUTPUT_DIR="../test-reports"
mkdir $OUTPUT_DIR

XVFB=`which Xvfb`
if [ "$?" -eq 1 ];
then
    echo "Xvfb not found."
    exit 1
fi

FIREFOX=`which firefox`
if [ "$?" -eq 1 ];
then
    echo "Firefox not found."
    exit 1
fi

$XVFB :99 -ac &    # launch virtual framebuffer into the background
PID_XVFB="$!"      # take the process ID
export DISPLAY=:99 # set display to use that of the xvfb

# run the tests
java -jar ../lib/JsTestDriver.jar --config jsTestDriver.conf --port 4224 --browser $FIREFOX --tests all --testOutput $OUTPUT_DIR

kill $PID_XVFB     # shut down xvfb (firefox will shut down cleanly by JsTestDriver)
echo "Done."

Komut dosyasını çağıran bir Karınca hedef oluşturmak:

<target name="test">        
    <exec executable="cmd" osfamily="windows">
        <!-- This might contain something different in a Windows environment -->
    </exec>

    <exec executable="/bin/bash" dir="test" osfamily="unix">
        <arg value="run_js_tests.sh" />
    </exec>
</target>   

Son olarak, Bambu inşa söyle test hedef hem çağırmak ve JUnit test sonuçları için plan. Burada varsayılan "**/test-reports/*.xml" iyi yapacak.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • A Alkhaldi

    A Alkhaldi

    12 Mayıs 2007
  • Canal TekZoom

    Canal TekZoo

    1 NİSAN 2012
  • Paul Schroder

    Paul Schrode

    30 Kasım 2007