【问题标题】:Wanted but not invoked Mockito通缉但未调用 Mockito
【发布时间】:2016-05-18 17:38:47
【问题描述】:

您好,我的testRegLogin() 测试出现"Wanted but not invoked" 错误,但是我的其余测试都通过了。 我的测试如下。此代码测试Login.java 代码,该代码检查输入JTextField 的详细信息,然后根据数据库检查它们。如果发生正确登录,它会调用 Controller 类。

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();     
   }
}

【问题讨论】:

    标签: java eclipse swing junit mockito


    【解决方案1】:

    Mockito 在您的 testRegLogin() 方法中告诉您您期望 login.register() 被调用一次,但 Mockito 告诉您它从未被调用过。您可以通过更改来验证这一点

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

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

    【讨论】:

    • 我按照你的建议做了,但是现在我得到一个 "UnfinishedVerificationException""missing method call for verify(mock)"。但是,如果我单独运行它而不是整个文件,它确实会通过。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-30
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多