【问题标题】:Should I seperate test functions which throw error from test interface?我应该从测试接口中分离出抛出错误的测试函数吗?
【发布时间】:2021-02-11 23:10:51
【问题描述】:

我是 JUnit 的新手。我尝试编写一个简单的服务类“ProductService”的单元测试。 这是我对“ProductService”的测试代码

public interface TestProductService {

    void shouldCreateProduct() throws EntityIsAlreadyCreatedException;
    void shouldDeleteProductById() throws EntityNotfoundException;
    void shouldUpdateProduct();
    void shouldFindProductById() throws EntityNotfoundException;
    void shouldFindAllProducts() throws EntityNotfoundException;
    void shouldThrowErrorWhenFindAllProductsWhichAreNotInDB();
    void shouldThrowErrorWhenFindProductWhichAreNotInDB() throws EntityNotfoundException;
    void shouldThrowErrorWhenDeleteProductWhichIsNotInDB() throws EntityNotfoundException;
    void shouldThrowErrorWhenCreateProductWhichIsAlreadyInDB() throws EntityIsAlreadyCreatedException;

 
}

如您所见,有些函数可能会引发错误。此外,其他功能测试简单的“CRUD”操作。我应该将可能向另一个接口抛出错误的函数分开吗? 如果我将它们分开,我可以提供接口隔离吗? 谢谢你的帮助。

【问题讨论】:

    标签: java spring exception junit interface-segregation-principle


    【解决方案1】:

    应根据功能进行接口隔离。如果您将其视为原则“不应强迫实现接口的客户端依赖于他们不使用的接口”。这意味着最好为每个功能提供单独的接口,而不是推动客户端实现不相关的功能。但是在你的情况下,我很好奇你为什么会有一个用于测试的接口,它会给你带来什么好处......即使你这样做,它也不必是一个用于错误抛出场景的单独接口。相当好的测试设计是为您正在为其创建测试的类实现具有一对一的映射

    ProductService >> TestProductService or ProductServiceTest 
    

    【讨论】:

    • 感谢您的建议,我会采纳的。
    猜你喜欢
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多