java - 如何对实现 Runnable 的类进行单元测试

标签 java multithreading unit-testing junit

我有一个实现 Runnable 接口(interface)的类 ExampleThread。

public class ExampleThread implements Runnable {

    private int myVar;

    public ExampleThread(int var) {
        this.myVar = var;
    }

    @Override
    public void run() {
        if (this.myVar < 0) {
            throw new IllegalArgumentException("Number less than Zero");
        } else {
            System.out.println("Number is " + this.myVar);
        }
    }
}

如何为这个类编写 JUnit 测试。我试过如下

public class ExampleThreadTest {

    @Test(expected = IllegalArgumentException.class)
    public void shouldThrowIllegalArgumentExceptionForInvalidNumber() {
        ExampleThread exThread = new ExampleThread(-1);

        ExecutorService service = Executors.newSingleThreadExecutor();
        service.execute(exThread);
    }
}

但这行不通。有什么方法可以测试这个类以覆盖所有代码吗?

最佳答案

我想您只想测试 run() 方法是否正确。目前,您还测试了 ServiceExecutor

如果您只想编写单元测试,您应该在测试中调用 run 方法。

public class ExampleThreadTest {

    @Test(expected = IllegalArgumentException.class)
    public void shouldThrowIllegalArgumentExceptionForInvalidNumber() {
        ExampleThread exThread = new ExampleThread(-1);
        exThread.run();
    }
}

关于java - 如何对实现 Runnable 的类进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31933769/

相关文章:

java - Java文本输出中的UTF-8编码问题

Java:在原始线程的上下文中从另一个线程调用回调

java - 由于java中的某些条件,如何调用函数来延迟执行?

c# - 如何在c#.net中的多线程和每行一个线程中逐行处理文件?

java - Mockito/Spring MVC - (注解驱动)请求映射动态验证

java - JMock奇怪的try/catch子句

java.lang.ArrayStoreException IBM Websphere

JavaFX 对 BackgroundImage 应用效果

java - 如何格式化 ZonedDateTime

python - 在派生类中重写assertEqual时出现类型错误