저는 C# 초보자이며이 오류가 발생했습니다 Argument 1: Cannot convert from 'string' to 'System.Action'
. 솔직히이 문제를 해결하는 방법을 모르겠습니다. 이 오류를 수정하려면 내 코드에 무엇을 추가해야하는지 알려주세요. 나는 기본적으로 코드가 올바르게 작동하는지 테스트 할 단위 테스트를 작성하고있다. (코드는 예외를 던지기로되어있다.)누군가가 C#에서이 오류를 수정하는 방법을 알려 줄 수 있습니까?
단위 테스트 프로젝트 파일 :
[TestMethod]
public void ExceptionTest()
{
var test = new JumpingCode();
Assert.ThrowsException<ArgumentException>(test.EmptyValue(null));
}
클래스 파일 : 나는 기본적으로 무작위로 던져 테스트입니다
namespace Jumping
{
public class JumpingCode
{
public string EmptyValue(string some)
{
if (string.IsNullOrEmpty(some))
{
throw new ArgumentException("Name Cannot be null or empty");
}
return "Hello World";
}
}
}
이 내 코드입니다. Unit Test 파일은 오류 메시지를 던집니다. 오류 메시지는이 줄에 있습니다. Assert.ThrowsException<ArgumentException>(test.EmptyValue(null))
test.EmptyValue(null)
은 밑줄이 그어진 텍스트입니다. 나는 정직하게 문제가 뭔지 전혀 모른다. 내가 잘못하고있는 것을 알고 있지만, 나는 무엇을 모르고 있습니다. 이것이 아무 것도 변하지 않을지 모르겠지만 전에는 예외에 대한 단위 테스트를 작성한 적이 없습니다.
귀하의 놀라운 대단히 감사합니다. 왜 지금 어떻게 작동하는지 설명해 주시겠습니까? –
코드에서 'EmpyValue'의 반환 값을'Assert' 메서드에 전달합니다. 이것은'string'입니다. 그러나 Assert는이 람다 표현식이 생성하는 매개 변수로'Action' 델리게이트 (메소드 호출)가 필요합니다. 자세한 내용을 보려면 [여기] (https://msdn.microsoft.com/de-de/library/system.action (v = vs.110) .aspx) 및 [여기] (https://stackoverflow.com)를 클릭하십시오./questions/4934544/lambda-expression-vs-anonymous-methods). – jAC
Assert.ThrowsException <...>은 '결과'를 반환하지 않는 '액션'대리인을 필요로합니다. 'EmptyValue'메소드는 문자열을 반환하기 때문에 '액션'과 호환되지 않습니다. 캡슐화를 통해 반환 형식을 무시하는 람다 식에서 메서드 호출을하면 실제로 Assert 메서드에 '동작'이 전달됩니다. –