Использование GitHub в обучении студентов. Автоматизация проверок. Часть II

Это продолжение статьи про автоматизацию проверок работ студентов (первая часть).

Сегодня продолжу рассказывать про автоматизацию проверок работ студентов: проверку правильности решения (прохождение unit-тестов). И пока ещё примеры будут связаны с C#.

Понимаю, что для многих информация в статье будет «слабой» и т.п. Но, надеюсь, хоть какому-нибудь преподавателю она пригодится. Потому как, многие преподаватели программирования не знают как облегчить себе проверки студенческих работ. Даже таким простым способом.

Добавить в репозиторий проверку прохождения unit-тестов на C# нет ничего сложного. При создании workflow в GitHub Actions можно выбрать workflow специфичные для .Net.

0027a619f37721b366cfb68064b0ac81.png47018ce1bd391435d8266a3401e3587b.png

Предлагаемого варианта хватит с лихвой. Я только немного подправляю код «под себя».

name: dotnet test

on:
  pull_request:
    branches: [ "master" ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3

    - name: Setup .NET
      uses: actions/setup-dotnet@v3
      with:
        dotnet-version: 6.0.x

    - name: Restore dependencies
      run: dotnet restore

    - name: Build
      run: dotnet build --no-restore

    - name: Test
      run: dotnet test --no-build --verbosity normal

Почему я использую отдельный файл для автоматизации прохождения тестирования, а не добавляю этапы в один workflow? Ответ простой: чтобы разграничить вывод результатов, чтобы понимать что прошло, а что нет. Так проще потом объяснять студентам: тесты пройдены, а вот правила оформления кода не соблюдаются.

После выполнения мы получим «небольшой отчёт», примерно как на изображениях ниже.

33869c6b3645a82a33a0705283dbfabb.png61dceda26d129394d8da8d2186489f69.png959d9a26ca4951c2b7ac18bbcbb67a98.png

Помимо прохождения самих unit-тестов в данном workflow происходит ещё выполнение сборки. Следовательно мы увидим предупреждения и ошибки сборки проектов решения.

Остаётся дело за малым: чтобы студенты научились писать unit-тесты. Почему я не советую писать unit-тесты преподавателю заранее? Потому, что я стараюсь давать такие задания, для которых сложно сразу написать тесты. И мне важно чтобы студенты учились самостоятельно проектировать библиотеки классов. А если они их проектируют самостоятельно — то и подходить к написанию тестов нужно индивидуально. И да, этот подход влечёт за собой ещё и проверку правильности написания unit-тестов. Но нужно же подходить к работе преподавателя программирования со всей ответственностью и с правильным закладыванием фундамента, который требуется отрасли.

Можно добавить ещё и вывод о покрытии кода тестами и много чего ещё. Но об этом в следующих статьях.

© Habrahabr.ru