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.
remove und remove(Object o) entfernen beide Objekte, der eine immer den Kopf der andere das gegebene Element.
Du solltest mal schauen, was die zurückgeben
Die booleans sagen dir, ob das Entfernen erfolgreich war.
Edit: Mist zu langsam!
Hier das Beispiel, in dem geht es wunderbar.
Java:
Queue<URL> queue = new LinkedList<>();
URL url = new URL("http://www.test.de");
queue.offer(url);
System.out.println("Remove Success: " + queue.remove(url));
Da hängt viel zu viel dran als das ich das posten könnte.
In meiner Warteschlange befinden sich ca. 5 Elemente vom Typ URL.
In meinem Test mache ich nun folgendes:
Java:
public class TestQueue {
private static MyQueue queue;
private static URL url;
/**
* @throws java.lang.Exception
*/
@BeforeClass
public static void setUpBeforeClass() throws Exception {
queue = new MyQueue();
url = new URL("http://www.test.de");
}
/**
* @throws java.lang.Exception
*/
@Before
public void setUp() throws Exception {
queue.offer(url);
}
/**
* Test method
*/
@Test
public void testRemove() {
System.out.println("" + queue.remove(url)); // hier wird true ausgegeben
System.out.println(queue.isEmpty()); // hier false, weil ich mehrere Elemente in der queue habe
assertFalse("The url should not be in the queue any more.", queue.contains(url)); // hier failure
}
}
Ahhh.. dummer JUnit-Anfänger Fehler meiner seits.
Ich habe natürlich weitere Tests in der Klasse und mache
Jedes mal bei setUp() ein offer, weshalb das Element natürlich
öfters drin ist.
Ich hab deine Klasse MyQueue durch ne Queue ersetzt. Der Test läuft durch.
Warum ist url in deinem Test static? Kann es sein dass sich die url öfter in deiner Queue befindet? Ein remove() Aufruf löscht dann nur das erste Vorkommen der URL aus der Queue. Ein contains() würde dann immernoch true liefern.
Ansonsten muss der Fehler in deiner MyQueue Klasse liegen.