title: What kind of test is it in "TDD"?
body: <p>In our development, we use TDD, so we have some tests like this:</p>
  
  <pre><code>"User" should {
    "return 'Mike' if its name is 'Mike'" in {
        val user = User("Mike")
        user.getName === "Mike"
    }
    "return 20 if its age is 20" in {
      val user = User(age = Some(20))
      user.getAge === Some(20)
    }
  }
  </code></pre>
  
  <p>The tests we are writing here looks like "Unit tests".</p>
  
  <p>Then I found specs2 provides another kind of syntax which is more expressible, which I'm interested in:</p>
  
  <pre><code>def is = s2"""
     User can have name and age, and we have ways to get them, say, if we have a user whose name is "Mike" and the age is "20",
       - we can the name "Mike" [$e1]
       - also can get the age 20 [$e2]
  """
  def e1 = {
    val user = User("Mike")
    user.getName === "Mike"
  }
  def e2 = {
    val user = User(age = Some(20))
    user.getAge === Some(20)
  }
  </code></pre>
  
  <p>I want to try it with TDD, but soon I found this kind of tests are "Acceptance specification". There is a strong question came into my mind: </p>
  
  <p>What kind of tests are they if we mention "TDD"? Must they be "Unit tests"? Is it good practice to use the "acceptance specification" to drive the implementation?</p>