2016-05-18 3 views
-1

Hallo Ich bekomme einen "Wanted but not invoked" Fehler für meine testRegLogin() Test, aber der Rest meiner Tests sind alle vorbei. Meine Tests sind unten. Dieser Code testet einen Code Login.java, der in einem JTextField eingegebene Details überprüft und sie dann mit der Datenbank vergleicht. Wenn eine korrekte Anmeldung erfolgt, wird eine Klasse Controller aufgerufen.Gesucht, aber nicht aufgerufen Mockito

import org.junit.After; 
import org.junit.Test; 
import org.mockito.Mockito; 
import com.jogamp.newt.event.*; 

import static org.junit.Assert.*; 
import static org.mockito.Mockito.*; 
import java.awt.AWTException; 
import java.awt.Robot; 
import java.awt.Toolkit; 
import java.awt.datatransfer.Clipboard; 
import java.awt.datatransfer.StringSelection; 
import javax.swing.*; 
public class TestLoginJunit { 

    Login log = new Login(); 
    String username = "edwardc5";  
    String password = "case4"; 
    Robot r; 
    JButton[] buttons = log.sendButton(); 

    //correct login for program expected outcome = new controller invoked 
    @Test 
    public void testCorrectLogin() throws AWTException { 

     r=new Robot(); 
     Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); 
     StringSelection stringSelection = new StringSelection(username); 
     clipboard.setContents(stringSelection, stringSelection); 
     r.keyPress(KeyEvent.VK_CONTROL); 
     r.keyPress(KeyEvent.VK_V); 
     r.keyRelease(KeyEvent.VK_CONTROL); 
     r.keyRelease(KeyEvent.VK_V); 
     r.keyPress(KeyEvent.VK_TAB); 
     r.keyRelease(KeyEvent.VK_TAB); 
     r.delay(500); 

     stringSelection= new StringSelection(password); 
     clipboard.setContents(stringSelection, stringSelection); 
     r.keyPress(KeyEvent.VK_CONTROL); 
     r.keyPress(KeyEvent.VK_V); 
     r.keyRelease(KeyEvent.VK_CONTROL); 
     r.keyRelease(KeyEvent.VK_V); 
     r.delay(500); 

     buttons[0].doClick(); 
     r.delay(100); 
     Controller controller = Mockito.spy(new Controller()); 
     verify(controller, times(1)); 
    } 

    //testing wrong username outcome= error displayed and controller not invoked 
    @Test 
    public void testWrongUsernameLogin() throws AWTException { 
     Login login = mock(Login.class); 
     r=new Robot(); 
     Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); 
     StringSelection stringSelection = new StringSelection("ed"); 
     clipboard.setContents(stringSelection, stringSelection); 
     r.keyPress(KeyEvent.VK_CONTROL); 
     r.keyPress(KeyEvent.VK_V); 
     r.keyRelease(KeyEvent.VK_CONTROL); 
     r.keyRelease(KeyEvent.VK_V); 
     r.keyPress(KeyEvent.VK_TAB); 
     r.keyRelease(KeyEvent.VK_TAB); 
     r.delay(500); 

     stringSelection= new StringSelection(password); 
     clipboard.setContents(stringSelection, stringSelection); 
     r.keyPress(KeyEvent.VK_CONTROL); 
     r.keyPress(KeyEvent.VK_V); 
     r.keyRelease(KeyEvent.VK_CONTROL); 
     r.keyRelease(KeyEvent.VK_V); 
     r.delay(500); 

     buttons[0].doClick(); 
     r.delay(100); 
     verify(login, never()).invokeController(); 
    } 

    //testing cancel button outcome= window closes 
    @Test 
    public void testCancelLogin() throws AWTException { 
     Login login = mock(Login.class); 
     r=new Robot(); 
     r.delay(500); 
     buttons[2].doClick(); 
     r.delay(100); 
     verify(login, never()).invokeController(); 
    } 

    //testing registration button outcome = register is invoked 
    @Test 
    public void testRegLogin() throws AWTException { 
     Login login = mock(Login.class);  
     r=new Robot(); 
     buttons[1].doClick(); 
     r.delay(500); 
     verify(login, times(1)).register();  
    } 
} 

Antwort

0

Was Mockito ist Ihnen sagen, in Ihrem testRegLogin() Methode, um Ihre login.register() erwarten eine Zeit zu sein, nennen aber Mockito ist Ihnen sagen, dass es nie genannt wurde. Sie können das überprüfen, indem

Ändern

verify(login, times(1)).register();

zu

verify(login, never()).register();

+0

Ich tat, wie Sie aber jetzt schlug ich bin immer _ "UnfinishedVerificationException" _, _ "fehlende Methodenaufruf für überprüfen (Mock) "_. Es passiert jedoch, wenn ich es selbst und nicht die gesamte Datei ausführen. – Eddie94