2013-06-12 4 views
-1

기존 프로젝트에 대한 단위 테스트를 만들고 있습니다.암시 적으로 void 유형을 int로 변환 할 수 없습니다.

  • n1n2
  • op 문제가 actual 함께 메인 프로그램

의 스위치 케이스에 입력 피연산자 인 수이다. cannot implicitly convert void to int 오류가 발생하여 예상 값과 실제 값을 일치시킬 수 없습니다.

내 단위 테스트 : docalc에 대한

[TestMethod()] 
public void docalcTest(int actual) 
{ 
    Form1 target = new Form1(); // TODO: Passenden Wert initialisieren 

    double n1 = 15; // TODO: Passenden Wert initialisieren 
    double n2 = 3; // TODO: Passenden Wert initialisieren 
    int op = 2; // TODO: Passenden Wert initialisieren 
    int expected = 5; 

    actual = target.docalc(n1, n2, op); 

    Assert.AreEqual(expected,actual); 
} 

코드 : I 무효 반환 docalc ... int로 반환 형식을 변경하고 당신이 잘되어야한다고 생각

public void docalc(double n1, double n2, int op) 
{ 
    result = 0; 
    setText("clear"); 

    switch (op) 
    { 
     case 1: 
      result = n1 + n2; 
      break; 
     case 2: 
      result = n1 - n2; 
      break; 
     case 3: 
      result = n1 * n2; 
      break; 
     case 4: 
      result = n1/n2; 
      break; 
    } 

    setText(result.ToString()); 
} 
+5

'target.docalc'란 무엇입니까? – PhonicUK

+2

'docalc'은 무엇을 반환합니까? 만약 당신이 어떤 것을 반환하기를 원한다면 그것은'void' 메소드가 될 수 없습니다. – Oded

+0

target.docalc (...)는 무엇을 반환합니까? 나는 당신이이 에러를 얻는 이유를 무언가로 추측하고 있습니다. – DaveHogan

답변

0

3

target.docalc() 메서드는 void 메서드이며 actual은 int입니다. 컴파일러에서 말한 것처럼 voidint에 할당 할 수 없습니다.

의견에 따라 docalc()은 다음과 같습니다 (당신이 정말로 당신의 질문을 수정해야합니다) :

public void docalc(double n1, double n2, int op) 
{ 
    result = 0; 

    ... 

    setText(result.ToString()); 
} 

당신은 int에 메소드의 리턴 타입을 변경하고 결과를 반환해야합니다 :

public int docalc(double n1, double n2, int op) 
{ 
    int result = 0; 

    ... 

    return result; 
} 

사이드 데이트, 왜 이것을합니까?

[TestMethod()] 
public void docalcTest(int actual) 
{ 
    ... 

    actual = ... 

테스트 방법은 매개 변수없이 호출되므로 조금 쓸모가 없습니다. 다음과 같이 변경하실 수 있습니다 :

[TestMethod()] 
public void docalcTest() 
{ 
    ... 

    int actual = ... 
+0

int로 void를 사용할 수 없다는 것을 알고 있습니다. '[TestMethod()]를 수행하는 중에 public void docalcTest() { ... int actual = ...'도 작동하지 않습니다. 이미 시도, 같은 오류가 발생했습니다. 그것이 길을 찾는 이유입니다. 미리 감사드립니다 – Ruud

+0

@ 루드가 내 대답을 다시 읽었습니다. 'int actual'의 선언에 대한 언급은 답이 아니므로,'docalc()'메쏘드의 리턴 타입을 바꾸면됩니다. – CodeCaster

+0

알았어. 감사. 즉, 지금 전체 코드를 변경해야합니다. – Ruud

관련 문제