Ich habe getestet, wie man Rubys Test / Gerät und Janken's Code verwendet.

Als allererstes

Die Aufgabe lautete: "Test Janken's Programm mit test / unit." Ich habe den Testcode selbst zum ersten Mal gehört, also werde ich ihn als mein eigenes Memo schreiben. Die Betriebsumgebung ist wie folgt.

mac Ruby 2.6.5 test/unit 3.3.6

Was Sie erreichen wollen

Testen Sie Janken's Programm mit "test / unit".

Was ist Test / Einheit?

Erstens ist der Testcode ein Programm, um zu überprüfen, ob die Logik des geschriebenen Programms wie erwartet funktioniert.

test / unit ist ein Testframework für Ruby, und es scheint, dass es ursprünglich als Standard installiert wurde. Informationen zur Installation von tesu / unit selbst finden Sie unter hier.

Grundlegende Verwendung von Test / Einheit

Bitte beachten Sie, dass dies je nach Version geringfügig unterschiedlich ist. Die grundlegende Syntax lautet wie folgt.

require 'test/unit'

 Klasse [Klassenname] <Test :: Unit :: TestCase

end

Erstens "erfordern" Test / Einheit ", um dieses Framework zu verwenden. Erstellen Sie als Nächstes eine Klasse, die Test :: Unit :: TestCase erbt. In Ruby wird die Klasse zu einer Testausführungsdatei, indem Test :: Unit :: TestCase geerbt wird.

require 'test/unit'

 Klasse [Klassenname] <Test :: Unit :: TestCase

 def test_ [Methodenname]
    foo = "hoge"
    assert_equal("hoge", foo)
  end

end

Der Testprozess ist wie oben. Erstellen Sie eine Methode und schreiben Sie dort das Programm, das Sie testen möchten. Die Regel ist, dass der Methodenname mit test_ beginnt. Schreiben Sie bei dieser Methode die Prüfmethode im folgenden Format. (Es gibt andere Prüfmethoden)

 assert_equal (angenommener Wert, Variablen, Methoden usw.)

assert_equal stellt sicher, dass der Wert der Variablen und der Rückgabewert der Methode Ihren Erwartungen entsprechen.

Dies ist das Ende des kurzen Tutorials. Standardmäßig stehen jedoch weitere Methoden zur Verfügung. Lesen Sie daher die Referenz.

Lösungen

Dann wird die Lösung der Leistungsbedingung unten beschrieben. Zunächst werde ich das Janken-Programm schreiben. (Es ist kein sehr kluges Programm, aber bitte vergib mir) Wenn Sie g, c oder p als Standardeingabe eingeben, wird das Ergebnis von Janken ausgegeben.

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 = "zeichnen"
 elsif (player == "Schmiere" && com == "Choki") || (player == "Choki" && com == "Par") || (player == "Par" && com == "Schmiere")
 res = "Du gewinnst"
else
 res = "Du verlierst"
end

 setzt "Du bist # {Spieler}, ich bin # {com}, # {res}."

In diesem Fall testen wir, ob das richtige Ergebnis angezeigt wird, wenn die Werte der beiden Variablen "player" und "com" festgelegt werden. Daher wird der folgende Teil getestet.

if player == com
 res = "zeichnen"
 elsif (player == "Schmiere" && com == "Choki") || (player == "Choki" && com == "Par") || (player == "Par" && com == "Schmiere")
 res = "Du gewinnst"
else
 res = "Du verlierst"
end

 setzt "Du bist # {Spieler}, ich bin # {com}, # {res}."

Dieses Mal werden wir den obigen Prozess zur Bestimmung des Sieges oder der Niederlage in einer Klasse zusammenfassen.

class Janken
  def self.judge(player,com)
    if player == com
 res = "zeichnen"
     elsif (player == "Schmiere" && com == "Choki") || (player == "Choki" && com == "Par") || (player == "Par" && com == "Schmiere")
 res = "Du gewinnst"
    else
 res = "Du verlierst"
    end
 return "Du bist # {Spieler}, ich bin # {com}, # {res}."
  end
end

Der Prozess des Gewinnens und Verlierens von Janken ist in der Klasse zusammengefasst. Schreiben Sie dann den Testprozess.

require 'test/unit'

class Test_Janken < Test::Unit::TestCase
  def test_janken
 assert_equal ('Du bist gut, ich bin gut, zeichne.', Janken.judge ("gut", "gut"))
 assert_equal ('Du bist Choki, ich bin Choki, zeichne.', Janken.judge ("Choki", "Choki"))
 assert_equal ('Du bist par, ich bin par, zeichne.', Janken.judge ("par", "par"))
 assert_equal ('Du bist goo, ich bin choki, du gewinnst.', Janken.judge ("goo", "choki"))
 assert_equal ('Du bist Choki, ich bin par, du gewinnst.', Janken.judge ("choki", "par"))
 assert_equal ('Du bist par, ich bin goo, du gewinnst.', Janken.judge ("par", "goo"))
 assert_equal ('Du bist gut, ich bin par, du verlierst.', Janken.judge ("goo", "par"))
 assert_equal ('Du bist Choki, ich bin goo, du verlierst.', Janken.judge ("choki", "goo"))
 assert_equal ('Du bist par, ich bin choki, du verlierst.', Janken.judge ("par", "choki"))
  end
end

Es ist wie das Überprüfen aller 9 Muster des Gewinnens und Verlierens von Janken mit assert_equal. Dies wird mit Jankens Verarbeitung kombiniert. Der folgende Code ist der letzte.

require 'test/unit'

class Janken
  def self.judge(player,com)
    if player == com
 res = "zeichnen"
     elsif (player == "Schmiere" && com == "Choki") || (player == "Choki" && com == "Par") || (player == "Par" && com == "Schmiere")
 res = "Du gewinnst"
    else
 res = "Du verlierst"
    end

 return "Du bist # {Spieler}, ich bin # {com}, # {res}."
    
  end
end

class Test_Janken < Test::Unit::TestCase
  def test_janken
 assert_equal ('Du bist gut, ich bin gut, zeichne.', Janken.judge ("gut", "gut"))
 assert_equal ('Du bist Choki, ich bin Choki, zeichne.', Janken.judge ("Choki", "Choki"))
 assert_equal ('Du bist par, ich bin par, zeichne.', Janken.judge ("par", "par"))
 assert_equal ('Du bist goo, ich bin choki, du gewinnst.', Janken.judge ("goo", "choki"))
 assert_equal ('Du bist Choki, ich bin par, du gewinnst.', Janken.judge ("choki", "par"))
 assert_equal ('Du bist par, ich bin goo, du gewinnst.', Janken.judge ("par", "goo"))
 assert_equal ('Du bist gut, ich bin par, du verlierst.', Janken.judge ("goo", "par"))
 assert_equal ('Du bist Choki, ich bin goo, du verlierst.', Janken.judge ("choki", "goo"))
 assert_equal ('Du bist par, ich bin choki, du verlierst.', Janken.judge ("par", "choki"))
  end
end

Ergebnis ist ,,.

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

Ich konnte ohne Probleme testen.

Referenz

Test- / Einheitenbibliothek --doc.ruby-lang.org

Verwendung des Standard-Unit-Test-Brain-Juice-Portals von Ruby

Schreiben Sie einen Test mit Test :: Unit -Qiita

Recommended Posts

Ich habe getestet, wie man Rubys Test / Gerät und Janken's Code verwendet.
Verwendung von StringBurrer und Arrays.toString.
So führen Sie einen Komponententest für Spring AOP durch
Verwendung von EventBus3 und ThreadMode
Wie man Gleichheit und Gleichheit benutzt (wie man Gleichheit benutzt)
Verwendung von OrientJS und OrientDB zusammen
Java Artery - Einfach zu verwendende Unit-Test-Bibliothek
Ich möchte einen Unit Test schreiben!
So richten Sie kapt ein und verwenden es
Verwendung von Teilzeichenfolgen und Substratmethoden
Verwendung von @Builder und @NoArgsConstructor zusammen
Ich war neugierig, wie man Optional orElse () und orElseGet () richtig verwendet.
So legen Sie verschiedene Quell- / Zielversionen für Produktionscode und Testcode fest
[Java] Verwendung der FileReader-Klasse und der BufferedReader-Klasse
[Ruby] Verwendung der gsub-Methode und der sub-Methode
Verwendung von Segmented Control und zu notierenden Punkten
Verwendung der Scope- und Pass-Verarbeitung (Servist)
So schreiben Sie Testcode mit Basic-Zertifizierung
[Java] Verwendung der Kalenderklasse und der Datumsklasse
[Java] Ich habe Polymorphismus studiert, daher werde ich zusammenfassen, wie man ihn verwendet und welche Vorzüge er hat.
Verwendung von Map
Wie benutzt man rbenv?
So schreiben Sie einen Komponententest für Spring Boot 2
So führen Sie mit RxAndroid einen Komponententest mit JVM an einer Quelle durch
Verwendung mit_option
Verwendung von fields_for
Verwendung von java.util.logging
Wie man Maven benutzt, das ich nicht mehr hören kann
Schreiben Sie zur Implementierung den Test und codieren Sie den Prozess
Verwendung der Karte
Verwendung von collection_select
Verwenden Sie Allure, um stilvolle Testberichte zu erstellen, die sprach- und rahmenunabhängig sind!
[Rails] Ich weiß nicht, wie ich das Modell verwenden soll ...
Wie benutzt man Twitter4J
Verwendung von MapStruct
Verwendung von TreeSet
Wie man Identität benutzt
Wie man Hash benutzt
Verwendung von Dozer.mapper
Wie benutzt man Gradle?
Verwendung von org.immutables
Verwendung von java.util.stream.Collector
Verwendung von VisualVM
Verwendung und Anwendung der JFrame / Canvas-Klasse von Java
Verwendung von Map
Ich würde gerne wissen, wie man redundanten Code verbessert!
Dynamisches Schreiben iterativer Testfälle mit test / unit (Test :: Unit)
Testen des Einschlusses von Bildern bei Verwendung von ActiveStorage und Faker
So legen Sie mit JAXB Zeichencode und Zeilenvorschubcode fest
So verwenden Sie OpenCV 4 unter Android und zeigen die Kamera live an
Ich möchte beim Schreiben von Testcode zufällig Informationen generieren
Ich habe versucht, Rubys "Klassen" -Probleme zu sammeln und zu lösen.
So legen Sie den Zeichencode und den Zeilenvorschubcode in Eclipse fest