Testen en versiebeheer
Kwaliteit en semver
Testen en versiebeheer is een gratis Ruby Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Ruby Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Ruby Academy bevat in totaal 4 lessen.
Waarom een gem testen
Omdat een gem door veel projecten wordt gebruikt, raakt een fout iedereen. Geautomatiseerde tests geven je vertrouwen bij het wijzigen van code en bewijzen dat de gem nog steeds werkt.
- Tests documenteren het verwachte gedrag.
- Ze vinden regressies voordat je een versie uitbrengt.
- Serieuze gebruikers verwachten ze voordat ze een gem gaan gebruiken.
Een framework kiezen
De twee populaire keuzes zijn Minitest (wordt met Ruby meegeleverd en is lichtgewicht) en RSpec (een uitgebreide DSL die zeer gangbaar is). Beide zijn prima; kies er één en voeg deze als ontwikkelingsafhankelijkheid toe in het gemspec.
Een Minitest-voorbeeld
Minitest-tests zijn gewone klassen met assertiemethoden. Hier zie je een zelfstandig voorbeeld dat de logica van je gem uitvoert en het resultaat controleert.
require "minitest/autorun"
def greet(name)
"Hi, " + name
end
class GreetTest < Minitest::Test
def test_greet
assert_equal "Hi, Sam", greet("Sam")
end
endVeelgebruikte asserties
Nuttige Minitest-asserties:
assert_equal expected, actualassert objenrefute objassert_nil valueassert_raises(Error) { ... }
Elke test moet één duidelijk gedrag controleren.
require "minitest/autorun"
class MathTest < Minitest::Test
def test_addition
assert_equal 4, 2 + 2
end
def test_truth
refute_nil 5
end
endTests uitvoeren en automatiseren
Meestal voeg je een Rake-taak toe, zodat rake test de volledige testsuite uitvoert. Continue integratie voert daarna bij elke push dezelfde taak uit op verschillende Ruby-versies, zodat problemen vroeg worden gevonden.
Wat is semantische versie-indeling
Semantische versie-indeling (semver) geeft betekenis aan een versienummer in de vorm MAJOR.MINOR.PATCH:
- MAJOR: incompatibele wijzigingen in de API.
- MINOR: nieuwe functies die achterwaarts compatibel zijn.
- PATCH: achterwaarts compatibele foutoplossingen.
Gebruikers vertrouwen hierop om veilig te kunnen bijwerken.
Een versie lezen
Bij 2.4.1 is major 2, minor 4 en patch 1. Door de tekenreeks te splitsen zie je de onderdelen.
version = "2.4.1"
major, minor, patch = version.split(".")
puts "Major: " + major
puts "Minor: " + minor
puts "Patch: " + patchWanneer verhoog je elk onderdeel
Beslisregels:
- Een fout opgelost zonder de API te wijzigen? Verhoog patch.
- Een functie toegevoegd terwijl oude code blijft werken? Verhoog minor en zet patch terug op 0.
- Bestaand gedrag verwijderd of gewijzigd? Verhoog major en zet minor en patch terug op 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")Versiebeperkingen
Gebruikers leggen de versie van je gem vast met operatoren in hun Gemfile:
'~> 1.4'staat 1.4 toe tot maar niet met inbegrip van 2.0 (pessimistisch).'>= 1.4'staat elke nieuwere versie toe.'= 1.4.2'legt precies die versie vast.
De pessimistische operator ~> komt het meest voor, omdat deze vernieuwingen en veiligheid in balans brengt.
Houd een wijzigingslogboek bij
Houd een CHANGELOG.md bij met een overzicht van wat er in elke versie is gewijzigd. Zo zien gebruikers wat nieuw is, wat niet meer werkt en hoe ze moeten overstappen. Koppel elke verhoging van het versienummer aan een vermelding in het wijzigingslogboek.
Vooruitgaveversies
Versies zoals 2.0.0.beta1 duiden op instabiele voorlopige versies. Gebruikers moeten zich er uitdrukkelijk voor aanmelden om ze te installeren, zodat je vroege versies kunt uitbrengen om te testen zonder normale installaties te beïnvloeden.
version = "2.0.0.beta1"
puts "Pre-release? " + version.include?("beta").to_sKorte controle
Controleer je begrip van versiebeheer.
Samenvatting: testen en versiebeheer
Je hebt geleerd hoe je een gem betrouwbaar houdt:
- Schrijf tests met Minitest of RSpec en automatiseer ze met Rake en CI.
- Volg semver: MAJOR.MINOR.PATCH.
- Verhoog het juiste onderdeel voor foutoplossingen, functies of incompatibele wijzigingen.
- Gebruik
~>-beperkingen en houd een wijzigingslogboek bij.
Vervolgens publiceren we de gem naar RubyGems.
Leer Ruby met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 29
- Lessen
- 109
Veelgestelde vragen
Is de les “Testen en versiebeheer” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Ruby Academy, waaronder “Testen en versiebeheer”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Ruby Academy bevat in totaal 4 lessen.
Wat leer ik in “Testen en versiebeheer”?
Kwaliteit en semver Je oefent met Ruby Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Ruby Academy te beginnen?
Ervaring vooraf is niet nodig. Ruby Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “Testen en versiebeheer”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Ruby Academy?
Ja. Elke les over Ruby Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Gemstructuur
- De code schrijven
- Testen en versiebeheer
- Publiceren naar RubyGems