gpt4 book ai didi

java - 编写多个测试函数会为除第一个以外的每个案例给出 NullPointerException

转载 作者:行者123 更新时间:2023-11-28 20:07:31 24 4
gpt4 key购买 nike

我正在尝试测试 VideoStore 类的功能,它包含一个名为 store 的视频类型数组。当我将测试类作为 junit 测试运行时,只有 4 个测试中的第一个通过,其他的则抛出 NullPointer 异常。当我单独运行每个测试时,每个测试都会通过。我已经上了测试课。

我已经尝试过使用@BeforeClass 而不是@Before Annotation。我也尝试在 east @Test 函数中单独实例化。

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;

import tm2.VideoStore;

public class VideoTest {
VideoStore vs;

@Before
public void before() {
vs = new VideoStore();
vs.addVideo("LifeOfGuy");
}

@Test
public void testAddVideo() {
assertEquals("LifeOfGuy",vs.store[0].videoName);
}

@Test
public void testDoCheckout() {
vs.doCheckout(vs.store[0].videoName);
assertTrue(vs.store[0].checkout);
}

@Test
public void testDoReturn() {
vs.doReturn("LifeOfGuy");
assertFalse(vs.store[0].checkout);
}

@Test
public void receiveRating() {
vs.receiveRating("LifeOfGuy", 5);
assertEquals(5,vs.store[0].rating);
}
}

VideoStore 类:

public class VideoStore {

public Video[] store = new Video[10];
static int count = 0;

public void addVideo(String name) {
store[count++] = new Video(name);
}

public void doCheckout(String name) {
for(int i=0; i<count; i++) {
if((store[i].videoName).equals(name)) {
store[i].doCheckout();
break;
}
}
}

public void doReturn(String name) {
for(int i=0; i<count; i++) {
if((store[i].videoName).equals(name)) {
store[i].doReturn();
break;
}
}
}

public void receiveRating(String name, int rating) {
for(int i=0; i<count; i++) {
if((store[i].getName()).equals(name)) {
store[i].receiveRating(rating);
}
}
}

void listInventory() {
System.out.println("----------------------------------------");
System.out.println("Video Name | Checkout Status | Rating ");
for(int i=0; i<count; i++) {
System.out.println(store[i].videoName+" | "+store[i].getCheckout()+" | "+store[i].getRating());;
}
System.out.println("----------------------------------------");
}
}

联合结果:----运行 4/4 错误 3 失败 01.testAddVideo通过2. testDoCheckout java.lang.NullPointerException异常3. testDoReturn java.lang.NullPointerException异常4. testreceiveRating java.lang.NullPointerException

每一个都单独通过

最佳答案

您的 count 变量是静态的,因此它会随着每次测试而增加,并且新视频会添加到数组中的不同位置以进行每次测试

让它成为非静态的

private int count = 0;

关于java - 编写多个测试函数会为除第一个以外的每个案例给出 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56576626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com