문제

일반

  • 따라 동일한 기준에 대한 모든 테스트합니다.
  • 에 대해 명확 각 테스트 상태입니다.
  • 에 대한 구체적 예상되는 동작입니다.

1)MethodName_StateUnderTest_Expectedbehavior

Public void Sum_NegativeNumberAs1stParam_ExceptionThrown() 

Public void Sum_NegativeNumberAs2ndParam_ExceptionThrown () 

Public void Sum_simpleValues_Calculated ()

출처: 명 기준에 대한 단위 테스트

2)구분하고 각 단어는 밑줄

Public void Sum_Negative_Number_As_1st_Param_Exception_Thrown() 

Public void Sum_Negative_Number_As_2nd_Param_Exception_Thrown () 

Public void Sum_Simple_Values_Calculated ()

기타

  • End 메서드 이름으로 테스트
  • 시작 메서드 이름으로 클래스 이름
도움이 되었습니까?

해결책

나는 꽤 많은 이에 당신과 함께 한 사람이다.이름 지정 규칙을 사용하고 있습니다:

  • 에 대한 명확한 각 테스트 상태입니다.
  • 특정에 대해 예상되는 행동을 했다.

무엇보다 당신은에서 필요한 테스트는 이름?

에 반하는 레이의 응답 나는 생각하지 않아요 테스트 접두사가 필요합니다.그것은 테스트 코드는,저희는 그것을 알고 있습니다.당신이해야 할 경우 이를 식별 코드에,당신은 더 큰 문제 귀하의 코드를 테스트하지 않아야 될 것으로 생산 코드입니다.

한 길이와 사용하의 밑줄 그 테스트 코드,도대체 누구 걱정합니까?만 당신과 당신의 팀을 볼 것이다,그래서 그대로 읽을 수 있는,그리고 맑은 무엇인지에 대해 테스트하고,수행!:)

는 말했다,나는 아직도 아주 새로운 테스트 블로그 내의 모험은 그것으로 :)

다른 팁

이것은 또한 읽기 가치가: 구성 단위 테스트

구조은 테스트 클래스별로 클래스,테스트되고 있습니다.지 않도록 특별하다.하지만 무슨 이상한 나에게 그가 중첩 등 각 방법에 대한 테스트되고 있습니다.

예:

using Xunit;

public class TitleizerFacts
{
    public class TheTitleizerMethod
    {
        [Fact]
        public void NullName_ReturnsDefaultTitle()
        {
            // Test code
        }

        [Fact]
        public void Name_AppendsTitle()
        {
            // Test code
        }
    }

    public class TheKnightifyMethod
    {
        [Fact]
        public void NullName_ReturnsDefaultTitle()
        {
            // Test code
        }

        [Fact]
        public void MaleNames_AppendsSir()
        {
            // Test code
        }

        [Fact]
        public void FemaleNames_AppendsDame()
        {
            // Test code
        }
    }
}

그리고 여기가 왜:

잘한 것이고,그것의 좋은 방식을 계속 테스트 구성됩니다.모든 테스트(또는 사실)메소드에 대해 함께 그룹화됩니다.는 경우,예를 들어, 당신이 사용한 CTRL+M,CTRL+O 바로 가기를 축소 방법체할 수 있는 쉽게 스캔 테스트를 읽어들이 좋아하는 스펙에 대한 귀하의 코드입니다.

나는 또한 다음과 같이 접근 방식:

MethodName_StateUnderTest_Expectedbehavior

그래서 아마도 조정:

StateUnderTest_ExpectedBehavior

기 때문에 각 시험에 이미 있는 중첩된 클래스

내가 사용하는 경향이 있회의 MethodName_DoesWhat_WhenTheseConditions 그래서 예를 들어:

Sum_ThrowsException_WhenNegativeNumberAs1stParam

그러나 내가 무엇을 많이 볼을 확인하는 것입 테스트 이름을 따르는 단위의 구조를 테스트

  • 정렬
  • 행동
  • Assert

는 또한 다음과 같이 BDD/거킨 빌딩 등이 구문의:

  • 다음

는 것을 이름에서 테스트 방법: UnderTheseTestConditions_WhenIDoThis_ThenIGetThis

그래서 당신의 예:

WhenNegativeNumberAs1stParam_Sum_ThrowsAnException

그러나 나는 훨씬 선호하는 퍼팅 메서드 이름이 테스트되고 있기 때문에 첫째로,다음을 테스트할 수 있 알파벳 순서로 정렬,또는 나타나는 알파벳순으로 정렬된 회원자에 VisStudio,그리고 모두에 대한 테스트 방법 1 함께 그룹화됩니다.


어떤 경우에,나는 분리하는 주요 섹션 테스트의 이름 밑줄,반대로 모든 단어, 을 생각하기 때문에,그것은 쉽게 읽고의 포인트는 테스트입니다.

다시 말해서,나는 다음과 같: Sum_ThrowsException_WhenNegativeNumberAs1stParam 보다 더 Sum_Throws_Exception_When_Negative_Number_As_1st_Param.

내가 이름을 내는 테스트 방법은 다음과 같은 다른 방법을 사용하여"PascalCasing"없이 또는 밑줄로 구분한다.가 postfix 테스트 에 대한 방법으키는 것은 아무 소용이 없습니다.는 방법은 테스트 방법은 특성으로 표시 TestMethod.

[TestMethod]
public void CanCountAllItems() {
  // Test the total count of items in collection.
}

는 사실로 인해 각 테스트 클래스만을 테스트하는 다른 하나의 클래스가 이름의 클래스의 메서드 이름입니다.클래스 이름을 포함하는 테스트 방법의 이름 같은 클래스에서 테스트와 접미사"시험".

[TestClass]
public class SuperCollectionTests(){
    // Any test methods that test the class SuperCollection
}

에 대한 방법을 테스트에 대한 예외 또는 작업은 가능하지 않은,나는 접두사 테스트 방법으로 단어 할 수 없.

[TestMethod]
[ExpectedException(typeOf(ArgumentException))]
public void CannotAddSameObjectAgain() {
  // Cannot add the same object again to the collection.
}

내 이름 convension 은 기초에서 문서 "TDD Tips:테스트 이름 지정 규칙 및 가이드라인" 의 브라이언은 요리입니다.이 문서에서는 매우 도움이 됩니다.

첫 번째 집합의 이름이 더 읽기 쉽게 때문에,CamelCasing 단어를 구분하고 이런 난해 이며 별도의 부분의 이름 지정 방식입니다.

나는 또한 포함하는 경향이"시험"어딘가에,하나에서 함수 이름이나 바깥쪽 또는 네임스페이스 클래스입니다.

로 당신을 따르는 단일 연습,정말 중요하지 않습니다.일반적으로,쓰는 하나의 단위에 대한 테스트 방법을 커버하는 모든 유사한 방법(저는 간단한 방법;)다음은 더 복잡한 설정의 테스트 방법을 위해 필요합니다.내 이름 지정 구조에 따라서 일반적으로 테스트(에서 이월 JUnit3).

사용'T'접두사에 대한 테스트 네임스페이스 클래스와 방법을 마련하고 있습니다.

내가 하려고 깔끔 만들고 폴더를 복제하는 네임스페이스,성 테스트 폴더 또는 별도의 프로젝트를 위한 테스트로 복제하고 생산의 구조에 대한 기본적인 테스트:

AProj
   Objects
      AnObj
         AProp
   Misc
      Functions
         AFunc
   Tests
      TObjects
         TAnObj
            TAnObjsAreEqualUnderCondition
      TMisc
         TFunctions
            TFuncBehavesUnderCondition

나는 쉽게 볼 수 있는 테스트,어떻게 원본 코드에 관하여,(수 없는 경우에는,다음 테스트가 너무 복잡한 어쨌든).

그것처럼 보인 인터페이스 이름 지정 규칙이(그러니까,당신은 혼동하지 않을 가진 것을 시작으로'나',또한 당신과 함께'T').

그것은 쉽게 컴파일하거나지 않고 테스트합니다.

그것은 좋은 이론에서 어쨌든,그리고 꽤 잘 작동을 위한 작은 프로젝트입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top