加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

使用Java帮助实际的TDD

发布时间:2020-12-14 19:17:13 所属栏目:Java 来源:网络整理
导读:我现在正在寻求帮助,将TDD用作真实世界的例子.大多数节目过于简单,并没有真正展示如何测试和重新考虑更复杂的类.以下是使用线程和网络套接字的代码示例.有人可以解释如何为这样的类创建一个独立的单元测试吗?谢谢. public class BaseHandler extends Thread

我现在正在寻求帮助,将TDD用作真实世界的例子.大多数节目过于简单,并没有真正展示如何测试和重新考虑更复杂的类.以下是使用线程和网络套接字的代码示例.有人可以解释如何为这样的类创建一个独立的单元测试吗?谢谢.

public class BaseHandler  extends Thread {
  protected Socket mClientSocket;
  protected BufferedReader is = null;
  protected BufferedWriter os = null;
  private Logger mLogger = Logger.getLogger(WebTestController.class.getName());
  protected WebTestController mWebTestController;

  /*********************************************************************
   * 
   * @param piPort - int port to listen on
   */
  public BaseHandler(){
  }


  /*********************************************************************** cleanup
   * Ensure sockets are closed as to not run into bind errors
   */
  protected void cleanup() {
    try {
      if (is != null)
        is.close();
      if (os != null)
        os.close();
      if (mClientSocket != null)
        mClientSocket.close();
    }
    catch (IOException e) {
        e.printStackTrace();
    }
    mLogger.info("cleaning up a socket");
  }

  /***********************************************************************************
   * Sends a message to the current socket
   * @param pMessage
   */
  protected void writeToSocket(String pMessage){
      try {
          os = new BufferedWriter(
            new OutputStreamWriter(mClientSocket.getOutputStream()));

        }
        catch (IOException e) {
          e.printStackTrace();
          cleanup();
          return;
        }
        try {
            os.write(pMessage,pMessage.length());
            os.flush();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        cleanup();
  }

}
最佳答案
以下是一些减少测试问题的实际操作:

>不要让你的类继承Thread.改为使其成为Runnable,因为您可以单独测试Runnable.
>使用dependency injection,以便可以用测试版本替换Logger和WebTestController(请参阅“模拟”).
>从您的代码中删除任何尚未执行任何操作的内容.然后测试你拥有的东西.只有当您实施的所有内容都正常工作且具有有效测试证明时,才添加新内容

但是我强烈建议您阅读一本关于TDD和单元测试的好书.简单的教程就是这么简单.它们不包括您将在现实生活中遇到的复杂案例.在现实生活中使用TDD是完全可能的,但它确实需要一些知识 – 就像编程一样.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读