Le devoir disait: "Tester le programme de Janken en utilisant test / unit." J'ai entendu le code de test lui-même pour la première fois, donc je vais l'écrire comme mon propre mémo. L'environnement d'exploitation est le suivant.
mac Ruby 2.6.5 test/unit 3.3.6
Testez le programme de Janken en utilisant "test / unit".
En premier lieu, le code de test est un programme pour vérifier si la logique du programme écrit fonctionne comme prévu.
test / unit est un framework de test pour Ruby, et il semble qu'il ait été installé à l'origine en standard. Veuillez vous référer à ici pour l'installation de tesu / unit lui-même.
À titre de prémisse, veuillez noter que cela diffère légèrement selon la version. La syntaxe de base est la suivante.
require 'test/unit'
class [nom de la classe] <Test :: Unit :: TestCase
end
Tout d'abord, require`` test / unit '' pour utiliser ce framework. Ensuite, créez une classe qui hérite de
Test :: Unit :: TestCase. Dans Ruby, la classe devient un fichier d'exécution de test en héritant de
Test :: Unit :: TestCase`.
require 'test/unit'
class [nom de la classe] <Test :: Unit :: TestCase
def test_ [nom de la méthode]
foo = "hoge"
assert_equal("hoge", foo)
end
end
Le processus de test est comme ci-dessus. Créez une méthode et écrivez le programme que vous souhaitez tester. La règle est que le nom de la méthode commence par «test_». Dans cette méthode, écrivez la méthode de vérification dans le format suivant. (Il existe d'autres méthodes de vérification)
assert_equal (valeur supposée, variables, méthodes, etc.)
ʻAssert_equal` garantit que la valeur de la variable et la valeur de retour de la méthode correspondent à ce que vous attendez.
C'est la fin du bref didacticiel, mais il existe d'autres méthodes disponibles par défaut, alors consultez la référence.
Ensuite, la solution de la condition de réalisation est décrite ci-dessous. Tout d'abord, j'écrirai d'abord le programme Janken. (Ce n'est pas un programme très intelligent, mais pardonnez-moi s'il vous plaît) Si vous entrez g, c ou p comme entrée standard, le résultat de Janken sera affiché.
player = gets.chomp
if player == "g"
player = "goo"
elsif player == "c"
player = "choki"
elsif player == "p"
player = "par"
end
com = rand(3)
if com == 0
com = "goo"
elsif com == 1
com = "choki"
else
com = "par"
end
if player == com
res = "dessiner"
elsif (player == "Goo" && com == "Choki") || (player == "Choki" && com == "Par") || (player == "Par" && com == "Goo")
res = "Vous gagnez"
else
res = "Vous perdez"
end
met "Vous êtes # {player}, je suis # {com}, # {res}."
Dans ce cas, nous testerons si le résultat correct est affiché lorsque les valeurs des deux variables «player» et «com» sont décidées, donc la partie suivante est testée.
if player == com
res = "dessiner"
elsif (player == "Goo" && com == "Choki") || (player == "Choki" && com == "Par") || (player == "Par" && com == "Goo")
res = "Vous gagnez"
else
res = "Vous perdez"
end
met "Vous êtes # {player}, je suis # {com}, # {res}."
Cette fois, nous résumerons le processus ci-dessus pour déterminer la victoire ou la défaite dans une classe.
class Janken
def self.judge(player,com)
if player == com
res = "dessiner"
elsif (player == "Goo" && com == "Choki") || (player == "Choki" && com == "Par") || (player == "Par" && com == "Goo")
res = "Vous gagnez"
else
res = "Vous perdez"
end
return "Vous êtes # {player}, je suis # {com}, # {res}."
end
end
Le processus de victoire et de défaite de Janken est résumé dans la classe. Ensuite, écrivez le processus de test.
require 'test/unit'
class Test_Janken < Test::Unit::TestCase
def test_janken
assert_equal ('Vous êtes goo, je suis goo, draw.', Janken.judge ("goo", "goo"))
assert_equal ('Tu es choki, je suis choki, dessine.', Janken.judge ("choki", "choki"))
assert_equal ('Vous êtes égal, je suis égal, dessiner.', Janken.judge ("par", "par"))
assert_equal ('Vous êtes goo, je suis choki, vous gagnez.', Janken.judge ("goo", "choki"))
assert_equal ('Vous êtes choki, je suis égal, vous gagnez.', Janken.judge ("choki", "par"))
assert_equal ('Vous êtes égal, je suis bon, vous gagnez.', Janken.judge ("par", "goo"))
assert_equal ('Vous êtes goo, je suis par, vous perdez.', Janken.judge ("goo", "par"))
assert_equal ('Vous êtes choki, je suis goo, vous perdez.', Janken.judge ("choki", "goo"))
assert_equal ('Vous êtes égal, je suis choki, vous perdez.', Janken.judge ("par", "choki"))
end
end
C'est comme vérifier les 9 modèles de victoire et de défaite de Janken avec ʻassert_equal`. Ceci est combiné avec le traitement de Janken. Le code suivant est le dernier.
require 'test/unit'
class Janken
def self.judge(player,com)
if player == com
res = "dessiner"
elsif (player == "Goo" && com == "Choki") || (player == "Choki" && com == "Par") || (player == "Par" && com == "Goo")
res = "Vous gagnez"
else
res = "Vous perdez"
end
return "Vous êtes # {player}, je suis # {com}, # {res}."
end
end
class Test_Janken < Test::Unit::TestCase
def test_janken
assert_equal ('Vous êtes goo, je suis goo, draw.', Janken.judge ("goo", "goo"))
assert_equal ('Tu es choki, je suis choki, dessine.', Janken.judge ("choki", "choki"))
assert_equal ('Vous êtes égal, je suis égal, dessiner.', Janken.judge ("par", "par"))
assert_equal ('Vous êtes goo, je suis choki, vous gagnez.', Janken.judge ("goo", "choki"))
assert_equal ('Vous êtes choki, je suis égal, vous gagnez.', Janken.judge ("choki", "par"))
assert_equal ('Vous êtes égal, je suis bon, vous gagnez.', Janken.judge ("par", "goo"))
assert_equal ('Vous êtes bon, je suis égal, vous perdez.', Janken.judge ("goo", "par"))
assert_equal ('Vous êtes choki, je suis goo, vous perdez.', Janken.judge ("choki", "goo"))
assert_equal ('Vous êtes égal, je suis choki, vous perdez.', Janken.judge ("par", "choki"))
end
end
Le résultat est ,,
Loaded suite test
Started
.
Finished in 0.000811 seconds.
--------------------------------------------------------------------------------
1 tests, 9 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
--------------------------------------------------------------------------------
1233.05 tests/s, 11097.41 assertions/s
J'ai pu tester sans aucun problème.
bibliothèque de test / unité --doc.ruby-lang.org
Comment utiliser le portail de test unitaire par défaut de ruby - Brain Juice