Taula de continguts

GitHub Classroom Autograde

GitHub Classroom Autograde ens permet testejar els repositoris pujats a una tramesa de GitHub Classroom.

Aquest article és per a professors que vulguin testejar automàticament les trameses dels alumnes.


Crear compte i inscriure alumnes

Primer de tot t'has de donar d'alta de Github Education i Github Classroom.

Després podràs crear una Github classroom.

Finalment, pots connectar els alumnes del teu Moodle amb Github Classroom.


Python Django

Per crear un autograde per a un projecte amb Django cal crear un test amb:

Amb Docker

Si hem dockeritzat l'app (veure Django docker) podem posar directament el Run command sense Setup command (docker ja està instal·lat a l'entorn de test de Github Actions):

Per tal que l'autograde surti bé cal advertir els alumnes de que res compleixi:


Java Gradle / Android Studio

En principi, posar en marxa els tests per a un projecte Java Gradle hauria de ser tan senzill com fer gradle test. Però si es tracta d'un projecte amb Android Studio no ho és tant, ja que necessita les SDK tools de Android i una versió concreta de Gradle.

Aquí tenim una pista de com configurar el workflow de Github Actions: https://github.com/android-actions/setup-android

Per posar el test en marxa, cal deixar buida la casella Setup command.

I posar aquesta línia de test a la casella Run command:

ANDROID_SDK_ROOT=/usr/local/lib/android/sdk ./gradlew test


Afegint MySQL als autotest

Si volem disposar d'una BD per als tests, caldrà fer diversos ajustos.

Al Marketplace de Github tenim de la possibilitat d'activar una BD MySQL en el Github Actions, i que es podrà emprar als tests.

La solució implica crear un starter workflow personalitzat dins la nostra organització, que activi la MySQL.

Per crear aquest starter workflow caldrà crear un repositori anomenat .github dins la nostra Github Organization i dins la carpeta workflow_templates.


Tests amb PHP i MySQL

Tens un repositori de plantilla a:

https://github.com/AWS2/php-mysql-world-test-template

Serveix per testejar els exercicis indicats a l'article PHP MySQL.

També podeu aprofondir en la confecció de tests a PHP test.

Per posar-ho en marxa et caldrà:

  1. Entrar a Github Classroom
  2. Crear roaster amb alumnes
  3. Crear nou Assignment.
  4. Utilitzar el repo template indicat més amunt com a plantilla.
  5. Afegir tests a Add Autograding Tests, en concret tenim 4 de preparats (les puntuacions son un exemple):
    1. Title Test (1 punt)
    2. Filter Test (3 punts)
    3. Join Test (2 punts)
    4. Add City Test (3 punts)
  6. Per posar a punt cadascun d'ells et caldrà anar a
    Add Test -> Run Command
    1. Test Name: text lliure, per exemple «test del títol».
    2. Setup Command:
      sudo .scripts/init.sh
    3. Run Command:
      vendor/bin/phpunit .tests/TitleTest.php
    4. Ull amb el script final post-test.sh: és imprescindible ja que apaga els serveis. Si no ho posem, el contenidor que fa el test de Github Actions no es tancarà mai (acabarà fent timeout).
    5. Puntuació: assignem els punts segons la dificultat del què calgui fer a l'alumne per superar el test (indicat més amunt per a aquest exemple).
  7. Al finalitzar es crearà un enllaç d'invitació per a l'Assignment.
  8. Testeja el repo tu mateix per veure si tot està bé. Et pots afegir tu mateix al roster de la classe i fer l'exercici com un alumne mes, sense enviar-los l'enllaç d'invitació.
  9. Envia l'enllaç d'invitació als teus alumnes. Aquest els crearà un repo privat a la organització on podran anar pujant el codi a src i aniran veient els tests que superen i la seva puntuació.


Tests amb Cordova i NodeJS

Autograding test:

  1. Setup command:
    sudo apt update ; sudo apt install -y nodejs ; sudo npm install -g cordova ; cordova platform add browser ; sudo snap remove firefox ; sudo apt install software-properties-common -y ; sudo add-apt-repository -y ppa:mozillateam/ppa ; sudo apt install firefox-esr
  2. Run command:
    cd .test ; npm install ; node 01-login-ok.js


Tests amb Flask

Autograding test:

  1. Setup command:
    sudo -H pip3 install -r requirements.txt ; sudo snap remove firefox ; sudo apt install software-properties-common -y ; sudo add-apt-repository -y ppa:mozillateam/ppa ; sudo apt install firefox-esr
  2. Run command:
    pytest --driver firefox .test/test_home.py