JUNIT Null-Zeiger-Ausnahme
es ist mein erstes mal mit JUNIT und ich buchstäblich kann es nicht funktionieren.
Ich habe eine Klasse person, in die firstName-und lastName-und eine test-Klasse, in die ich brauche zum testen der Methoden. Jedes mal wenn ich Versuch es zu testen, obwohl, wenn ich schrieb einen test für die Methode, es klappt nicht.
Hier ist mein code.
Klasse "Person"
public class Person {
private String firstName;
private String lastName;
public Person (String a, String b) {
firstName = a;
lastName = b;
}
public String getfirstName() {
return firstName;
}
public void setfirstName(String firstName) {
this.firstName = firstName;
}
public String getlastName() {
return lastName;
}
public void setlastName(String lastName) {
this.lastName = lastName;
}
@Override
public String toString() {
return firstName + " " + lastName;
}
}
Person, die Test-Klasse
public class PersonTest {
Person p1;
public PersonTest() {
Person p1 = new Person ("Thomas", "Brown");
}
@Before
public void setUp() {}
@After
public void tearDown() {}
@Test
public void testGetfirstName() {
assertEquals("Thomas", p1.getfirstName());
}
@Test
public void testSetfirstName() {}
@Test
public void testGetlastName() {
assertEquals("Brown", p1.getlastName());
}
@Test
public void testSetlastName() {}
@Test
public void testToString() {
assertEquals("Thomas Brown", p1.toString());
}
}
Kann jemand mich in die richtige Richtung?
- Bewegen Sie die Erstellung von
Person p1...
zu Ihrem@Before
Methode.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist der richtige Weg, es zu tun:
Haben Sie 2 Probleme in Ihrem code.
Diesem wird eine lokale variable erstellt und Ihr Feld
p1
bleibtnull
.Das zweite ist, dass in Ihrem
setUp
Methode, die Sie nicht initialisierenp1
.Die Methode, die Sie kommentieren mit
@Before
ausgeführt wird vor jedem test sollte man die Initialisierung gibt. Ich empfehle auch die Verwendung beschreibender Namen, so sollten Sie ändernp1
zutarget
oder sowas.Edit: Für Ihre
set...
Methoden, die Sie tun können, so etwas wie dieses:In diesem Punkt kann man davon ausgehen, dass
getFirstName
arbeitet seit Sie haben einen test für Sie als gut.Nebenbei: ich denke, dass Sie nicht haben, um zu testen, Getter und setter so lange, wie Sie diese generieren mit Eclipse. Es ist nur unnesessary.
null
s und leere Zeichenfolgen.NonNullParametrized
Aspekt, der geprüft werden alle Methoden in der business-Fassade und warf eine exception, wenn der Benutzer angegebennull
. In diesem Fall hatten wir nur zum test der Aspekt, der nicht alle Methoden. Am Ende des Tages war es viel weniger Arbeit für das gleiche Ergebnis.Ändern
zu
@Before
Methode (wobei es bei der Initialisierung für jeden@Test
). Wenn Sie die Konstruktor-Methode und ändern Sie die Klasse unter test an einem beliebigen Punkt, Sie sind die Einführung Nebenwirkungen für alle Ihre@Test
Methoden.JUnit
ich wusste nur, dass der Grund der NullPointerException 🙂 Aber vielen Dank für die guten Informationen, hoffe, es wird nützlich sein für ihn.