Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何测试剪贴板所有者#lostOwnership()?_Java_Unit Testing_Testng_Clipboard_Mockito - Fatal编程技术网

Java 如何测试剪贴板所有者#lostOwnership()?

Java 如何测试剪贴板所有者#lostOwnership()?,java,unit-testing,testng,clipboard,mockito,Java,Unit Testing,Testng,Clipboard,Mockito,有“所有者”类。它实现剪贴簿所有者。所有者在分离的线程中工作并侦听系统剪贴板。当剪贴板的内容更改时,所有者会进行一些工作。 我为所有者编写了单元测试。我午餐了所有者的线程并更改了剪贴板的内容。调用了lostOwnership()(我在控制台中看到了消息)。但是间谍没有注意到 import java.awt.*; import java.awt.datatransfer.*; class Owner extends Thread implements ClipboardOwner { p


有“所有者”类。它实现剪贴簿所有者。所有者在分离的线程中工作并侦听系统剪贴板。当剪贴板的内容更改时,所有者会进行一些工作。
我为所有者编写了单元测试。我午餐了所有者的线程并更改了剪贴板的内容。调用了lostOwnership()(我在控制台中看到了消息)。但是间谍没有注意到

import java.awt.*;
import java.awt.datatransfer.*;

class Owner extends Thread implements ClipboardOwner {
    public Owner(){
        super("Owner");
        start();
    }

    @Override
    public void run() {
        regainOwnership(Toolkit.getDefaultToolkit().getSystemClipboard());
        while (true) {}
    }

    @Override
    public void lostOwnership(Clipboard cb, Transferable t) {
        //process the change of clipboard's content
        regainOwnership(cb);
    }

    private void regainOwnership(Clipboard cb) {
        cb.setContents(cb.getContents(null), this);
    }
}
测试等级:

import org.testng.annotations.Test;
import java.awt.*;
import java.awt.datatransfer.*;
import static org.mockito.Mockito.*;

public class OwnerTest {
    @Test
    public void testLostOwnership() throws Exception {
        Owner owner = spy(new Owner());
        Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
        Transferable t = mock(Transferable.class);
        ClipboardOwner newOwner = mock(ClipboardOwner.class);
        cb.setContents(t, newOwner);
        Thread.sleep(1000);
        verify(owner).lostOwnership(cb, t);//test error: Wanted but not invoked
    }
}
问题:测试失败,因为间谍没有注意到调用了Owner#lostOwnership()

你觉得这个怎么样?
谢谢大家!

您测试AWT类有什么原因吗?我怀疑这已经完成了。我希望测试调用“//处理剪贴板内容的更改”。我也有相同的查询。你做了什么来测试这个场景?