안녕하세요. 저는 제 함수를 실행하고 junit 테스트를 테스트했지만 내 junit 테스트가 실패하는 이유를 알 수 없습니다. 내가 쓴 기능이 작동하는지 확신한다. 누군가 궁금해하는 경우 숙제입니다. 여기 함수를 실행하는 중 오류가 발생했습니다.
는 코드의 JUnit 설정public void removeAll(E x) {
first = first.next;
if (first.data == x) {
first = first.next;
}
Node curr = first;
Node fut = curr.next ;
while (fut!= null) {
if (fut.data == x) {
curr.next = fut.next;
}
curr=curr.next;
fut=fut.next;
}
assert check();
}
테스트 여기
@Test
public void test4() {
lst1.removeAll(3);
assertEquals(8, lst1.size());
assertEquals(false, lst1.contains(3));
lst1.removeAll(6);
assertEquals(5, lst1.size());
assertEquals(false, lst1.contains(6));
lst1.removeAll(5);
assertEquals(3, lst1.size());
lst1.removeAll(4);
assertEquals(2, lst1.size());
lst1.removeAll(7);
assertEquals(1, lst1.size());
lst1.removeAll(8);
assertEquals(0, lst1.size());
}
입니다
public class MyListTest {
private MyList<Integer> lst0;
private MyList<Integer> lst1;
private Integer[] a;
@Before
public void setUp() throws Exception {
lst0 = new MyList<Integer>();
a = new Integer[] {3,4,3,5,6,8,6,6,7,5};
lst1 = new MyList<Integer>();
for(Integer x: a) {
lst1.add(x);
}
}
크기 방법
public int size() {
return sz;
}
,
당신이 완전히 당신이 처음부터 다시 시작 고려하고 작은 아직 안전한 단계를 다시 길을 갈 수 붙어있는 경우 Main 메서드
public class MyList<E extends Comparable< E>> implements Iterable<E> {
private Node first;
private int sz;
public MyList() {
first = null;
sz = 0;
assert check();
}
}
검사 방법
private boolean check()
{
if (first == null && sz != 0) return false;
if (sz == 0 && first != null) return false;
if (sz == 1 && (first == null || first.next != null)) return false;
if (sz > 1 && (first == null || first.next == null)) return false;
int count = 0;
Node p = first;
while(p != null) {
count++;
p = p.next;
}
if (count != sz) {
System.out.printf("count = %d, sz = %d\n", count, sz);
return false;
}
return true;
}
이 경우 오류 메시지의 "내 코드 이 작업 정확하게는 방법을합니까?" – creinig
'처음'이란 무엇입니까? 테스트 할 때 사용하는 데이터는 어디에서 설정합니까? assert check()에서 –
; 및 lst1.removeAll (3); 왜 그런지 모르겠다. 첫 번째는 연결된리스트의 첫번째 링크 –