Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hab nicht gesehen, dass du ihn verlinkt hast. Hier nochmal die Aufgabe.
[Prinzipiell kanns auch gelöscht werden.]
Es geht um Black-Box-Testen mit JUnit.
Bei dem Testling handelt es sich um Software zum Spielen des Kartenspiels Bridge.
Die Software besteht aus 4 Klassen (PlayingCard, PlayingSet, Hand und BridgePlayer) und 3 Aufzählungen (Suit, Rank und Bid). Die Methode getOpeningBid() in der Klasse BridgePlayer dient dazu, die Stärke eines Blattes mit 13 verschiedenen Spielkarten abzuschätzen und abhängig davon entweder ein Gebot abzugeben oder zu passen.
Es sind nur die vorkompilierten class-Dateien und eine zugehörige Doxygen-Dokumentation vorgegeben.
Bei der Bewertung des Blattes gibt es zwei Kriterien:
1.) Kartenpunkte:
Ass = 4 Pkt.
König = 3 Pkt.
Dame = 2 Pkt.
Bube = 1 Pkt.
alle Zahlenkarten = 0 Pkt.
2.) Kartenverteilungen, wobei:
(i) gleichmäßige Vrtlg.
Alle Karten sind gleichmäßig über die vier Farben verteilt, je Farbe gibt es mind. zwei und höchstens fünf Karten.
(ii) einfarbige Vrtlg.
Setzt eine Farbe mit mind. 5 Karten voraus, diese wird als dominant bezeichnet, alle anderen Farben haben höchstens 4 Karten. Wenn die dominierende Farbe genau 5 Karten hat, gibt es eine andere Fare mit genau einer Karte.
(iii) zweifarbige Vrtlg.
Setzt zwei Farben mit mind. 5 Karten voraus, diese heißen dominant.
(iv) dreifarbige Vrtlg.
Setzt drei Farben mit mind. 4 Karten voraus. Diese werden dominant genannt.
Die folgende Übersicht zeigt alle Anforderungen an die Methode getOpeningBid():
ID R001: Das Blatt enthält nicht 13 untersch. Karten, Ausgabe: Invalid
ID R002: zwischen 15 und 22 Pkt. und gleichmäßige Vrtlg., Ausgabe: 1 NT
ID R003: 14-22 Pkt., einfarbige Vrtlg., Ausgabe: 1Pik, wenn Pik dominiert (und analog für die anderen Möglichkeiten)
ID R004: 13-22 Pkt., zweifarbige Vrtlg., Ausgabe: 1Pik, wenn Pik eine der zwei dom. Farben ist, 1Karo, wenn Kato und Herz oder Karo und Pik die dom. Farben sind, 1Herz, wenn Herz und Pik die dom. Farben sind
ID R005: 12-22 Pkt., dreifarbige Vrtlg., Ausgabe: 1Pik, wenn Pik unter den dom. Farben ist, sonst 1Karo
ID R006: 23Pkt. oder mehr, Ausgabe 2Kreuz
ID R007: die Voraussetzungen von R001-R006 sind nicht erfüllt, Ausgabe: PASS
So und gegeben ist jetzt noch Folgendes:
Java:
import org.junit.*;
import org.junit.runner.*;
import org.junit.Assert.*;
public class BridgePlayerTest{
@Test
public void testGetOpeningBid_00(){
BridgePlayer player=new BridgePlayer(){
public Hand getHand(){
PlayingCard cards[]=new PlayingCard[13];
cards[0]=CardSet.CLUB_K;
cards[1]=CardSet.HEART_2;
cards[2]=CardSet.SPADE_2;
cards[3]=CardSet.DIAMOND_A;
cards[4]=CardSet.CLUB_3;
cards[5]=CardSet.CLUB_4;
cards[6]=CardSet.CLUB_5;
cards[7]=CardSet.CLUB_6;
cards[8]=CardSet.CLUB_7;
cards[9]=CardSet.CLUB_8;
cards[10]=CardSet.CLUB_9;
cards[11]=CardSet.CLUB_A;
cards[12]=CardSet.SPADE_A;
return new Hand(cards);
}
};
Assert.assertTrue("Player does not bid 1 club on 15 points and 9-2-1-1 distribution!", player.getOpeningBid() ==Bid.ONE_CLUB);
}
Jetzt käme darunter noch ein zweiter Test und noch mehr (main..), was ich mal weglasse, weil es nicht Teil der Aufgabe ist.
So, wenn ich das richtig sehe, ist dies nun der Fall R003.
Aber was muss ich da nun noch einfügen in den Code?
[Zudem ist es so, daß die Methode getOpeningBid() die Karten nicht als Parameter bekommt, sondern selbst die Methode getHand() aufruft, die man stubben soll. Das bedeutet ja, wenn ich das richtig verstehe, dass ich die Methode irgendwie weghaben muss bzw. ersetzen muss??]
Kann mir jemand vielleicht helfen und mir mal sagen, was nun eigentlich genau zu tun ist.
Ich kenne ja die Klassen (z.B. BridgePlayer) gar nicht und weiß gar nicht, wie die Methode getOpeningBid() dort aussieht (ist ja nur die class-Datei gegeben).
du brauchst ja auch nicht wissen wie die Klassen intern aussehen, wie sie zu benutzen sind musst du wissen, sonst gehts nicht.
dann kannst du fuer jeden deiner use cases einen test schreiben.
zb
ID R001: Das Blatt enthält nicht 13 untersch. Karten, Ausgabe: Invalid
d.h. in deinem test erstellst du dir ein Blatt mit nicht 13 untersch. Karten, dann muss die Ausgabe invalid lauten.... (was anscheinend ueber dieses openingBid passiert).
wie gesagt - was die methoden machen und wie du sie nutzt, dass musst du wissen.