Ruby Academy · leksjon

Testing og versjonering

Kvalitet og semver

Leksjon 3 av 413 trinn

Testing og versjonering er en gratis leksjon i Ruby Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Ruby Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Ruby Academy inneholder totalt 4 leksjoner.

Hvorfor teste en gem?

En gem brukes av mange prosjekter, så en feil påvirker alle. Automatiserte tester gjør at De kan endre kode med trygghet og dokumentere at gemen fortsatt fungerer.

  • Tester dokumenterer forventet oppførsel.
  • De oppdager regresjoner før en utgivelse.
  • Seriøse brukere forventer tester før de tar i bruk en gem.

Velge et testrammeverk

De to populære valgene er Minitest (følger med Ruby og er lettvektsbasert) og RSpec (har et rikt DSL og er svært utbredt). Begge fungerer fint. Velg ett, og legg det til som en utviklingsavhengighet i gemspec-filen.

Et Minitest-eksempel

Minitest-tester er vanlige klasser med påstandsmetoder. Her er et selvstendig eksempel som kjører logikken i gemen Deres og kontrollerer resultatet.

require "minitest/autorun"

def greet(name)
  "Hi, " + name
end

class GreetTest < Minitest::Test
  def test_greet
    assert_equal "Hi, Sam", greet("Sam")
  end
end

Vanlige påstander

Nyttige Minitest-påstander:

  • assert_equal expected, actual
  • assert obj og refute obj
  • assert_nil value
  • assert_raises(Error) { ... }

Hver test bør kontrollere én tydelig oppførsel.

require "minitest/autorun"

class MathTest < Minitest::Test
  def test_addition
    assert_equal 4, 2 + 2
  end

  def test_truth
    refute_nil 5
  end
end

Kjøre og automatisere tester

Vanligvis legger De til en Rake-oppgave slik at rake test kjører hele testpakken. Kontinuerlig integrasjon kjører deretter den samme oppgaven ved hver push, på flere Ruby-versjoner, for å oppdage problemer tidlig.

Hva er semantisk versjonering?

Semantisk versjonering (semver) gir et versjonsnummer betydning gjennom formatet MAJOR.MINOR.PATCH:

  • MAJOR: inkompatible API-endringer.
  • MINOR: nye funksjoner som er bakoverkompatible.
  • PATCH: bakoverkompatible feilrettinger.

Brukerne stoler på dette for å kunne oppgradere trygt.

Lese en versjon

For 2.4.1 er major 2, minor 4 og patch 1. Hvis De deler opp strengen, ser De delene.

version = "2.4.1"
major, minor, patch = version.split(".")
puts "Major: " + major
puts "Minor: " + minor
puts "Patch: " + patch

Når hver del skal økes

Beslutningsregler:

  • Har De rettet en feil uten å endre API-et? Øk patch.
  • Har De lagt til en funksjon, mens gammel kode fortsatt fungerer? Øk minor, og tilbakestill patch til 0.
  • Har De fjernet eller endret eksisterende oppførsel? Øk major, og tilbakestill minor og patch til 0.
def bump_minor(version)
  major, minor, _patch = version.split(".").map(&:to_i)
  major.to_s + "." + (minor + 1).to_s + ".0"
end

puts bump_minor("1.3.5")

Versjonsbegrensninger

Brukerne angir gem-versjonen med operatorer i Gemfile-filen:

  • '~> 1.4' tillater versjon 1.4 opp til, men ikke inkludert, 2.0 (pessimistisk).
  • '>= 1.4' tillater alle nyere versjoner.
  • '= 1.4.2' låser en nøyaktig versjon.

Den pessimistiske operatoren ~> er mest vanlig og balanserer oppdateringer og sikkerhet.

Før en endringslogg

Vedlikehold en CHANGELOG.md som viser hva som ble endret i hver versjon. Den forteller brukerne hva som er nytt, hva som sluttet å fungere, og hvordan de skal migrere. Knytt en oppføring i endringsloggen til hver versjonsøkning.

Forhåndsutgivelsesversjoner

Versjoner som 2.0.0.beta1 markerer ustabile forhåndsvisninger. Brukerne må uttrykkelig velge å installere dem, slik at De kan levere tidlige versjoner for testing uten å påvirke vanlige installasjoner.

version = "2.0.0.beta1"
puts "Pre-release? " + version.include?("beta").to_s

En rask sjekk

Test forståelsen Deres av versjonshåndtering.

Oppsummering: Testing og versjonshåndtering

De har lært hvordan en gem holdes pålitelig:

  • Skriv tester med Minitest eller RSpec, og automatiser dem med Rake og CI.
  • Følg semver: MAJOR.MINOR.PATCH.
  • Øk riktig del ved feilrettinger, funksjoner eller inkompatible endringer.
  • Bruk ~>-begrensninger, og før en endringslogg.

Deretter publiserer vi gemen til RubyGems.

Gratis å komme i gang

Lær deg Ruby med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
29
Leksjoner
109

Ofte stilte spørsmål

Er leksjonen «Testing og versjonering» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Ruby Academy, inkludert «Testing og versjonering», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Ruby Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Testing og versjonering»?

Kvalitet og semver Du øver på Ruby Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Ruby Academy?

Ingen tidligere erfaring er nødvendig. Ruby Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «Testing og versjonering»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Ruby Academy-leksjonen?

Ja. Alle Ruby Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Gem-struktur
  2. Skrive koden
  3. Testing og versjonering
  4. Publisere til RubyGems
← Tilbake til Ruby Academy