다른 테스트 케이스를 사용하여 다른 기능을 테스트합니다. 하나의 .m 파일에 모든 다른 함수를 작성하고 모든 다른 테스트 케이스를 검사하기 위해 하나의 테스트 파일을 작성하려고합니다. Matlab (TDD 구현)에서 단일 파일에 여러 테스트 함수를 작성하는 방법
는 I 위의 링크를 따라하지만 오직 하나의 기능 구현 quadraticsolver을 볼 수 있지만, I는 사각형, 원형의 영역이다 산출 예컨대 그와 함께 여러 기능을 구현하고자. 아무도 나를 여러 함수를 구현하는 데 도움이 될 수 있습니까?답변
기능 기반 테스트에 대한 자세한 내용은 here입니다.
간단히 말해서 동일한 .m 파일에서 여러 테스트를 구현하려면 파일과 이름을 공유하는 하나의 main 함수가 필요하며이 주 함수는 파일 내의 모든 로컬 테스트 함수를 집계해야합니다 (localfunctions
사용). functiontests
을 사용하여 이러한 함수에서 테스트 배열을 만듭니다. 각 로컬 테스트 함수는 하나의 입력 (matlab.unittest.TestCase
개체)을 받아 들여야합니다.
function tests = my_tests()
tests = functiontests(localfunctions);
end
% One test
function test_one(testCase)
testCase.assertTrue(true)
end
% Another test
function test_two(testCase)
testCase.assertFalse(true);
end
my_tests.m
runtests
을 사용하고 전달하는 파일 이름 또는 run
을 사용하고 함수의 출력을 전달하려는 것입니다. runtests('my_tests.m')
% or
run(my_tests)
위에 링크 된 도움말 섹션을 바탕으로, 당신은 또한 각각 설정 및 분해 기능 역할을 setup
및 teardown
기능을 만들 수 있습니다. 이제 모두 하나 개의 파일 내에서 테스트를해야하지만 다른 모든 기능을 원하는 경우
업데이트는 귀하의 의견에 근거하여
은 (테스트중인 것들) 또한 당신에게, 하나 개의 파일에 을 할 수을 수행 할 수 있지만 주 기능이 아닌 .m 파일 내에 정의 된 모든 로컬 기능은 동일한 파일 내의 에만 액세스 할 수 있습니다.. the documentation for local functions에 더 많은 정보가 있습니다.
관련 함수를 단일 응집력 파일로 그룹화하는 데 관심이있는 경우 함수를 클래스로 만들 수 있습니다. 클래스를 사용하면 여러 함수 대신 별도의 메서드를 만들 수 있습니다. 많은 객체 지향 코드를 작성하지 않았다면, 이것은 소프트웨어에서 할 수있는 많은 크고 멋진 (그리고 무섭고 끔찍한) 것들의 시작입니다.
% Shape.m
classdef Shape
properties(Abstract)
Area
Circumference
end
end
% Circle.m
classdef Circle < Shape
properties(Dependent)
Area
Circumference
end
properties
Radius
end
methods
function circle = Circle(radius)
circle.Radius = radius;
end
function area = get.Area(circle)
area = pi*circle.Radius^2;
end
function circumference = get.Circumference(circle)
circumference = 2*pi*circle.Radius;
end
end
end
% Rectangle.m
classdef Rectangle < Shape
properties(Dependent)
Area
Circumference
end
properties
Length
Height
end
methods
function rectangle = Rectangle(length, height)
rectangle.Length = length;
rectangle.Height = height;
end
function area = get.Area(rectangle)
area = rectangle.Length*rectangle.Height;
end
function circumference = get.Circumference(rectangle)
circumference = 2*(rectangle.Length+rectangle.Height);
end
end
end
주 내가 여러 속성의 사용을 보여 주었지만 그들이 의존하기 때문에 실제로처럼 행동 :
는 예를 들어, 당신은 이런 식으로 뭔가를 (이 세 가지 별도 *하는 .m 파일에주의) 할 수 기능. 속성을 요청할 때마다 함수가 가져옵니다. PropertyName은 함수처럼 호출됩니다. 또한이 클래스에서 여러 함수 (속성)를 보여 줬지만 여러 항목을 하나로 묶은 것이 아닙니다. 나는 그들을 두 개의 응집력있는 수업으로 정리했다. 이러한 결합은 소프트웨어 설계 및 코드 유지 관리에 중요합니다.말했다
는, 이러한 형태는 다음 다음과 같이 상호 작용 할 수 있습니다>> c = Circle(5);
>> c.Area % calls the get.Area "function"
ans =
78.5398
>> c.Circumference
ans =
31.4159
>> r = Rectangle(4,5);
>> r.Area
ans =
20
>> r.Circumference
ans =
18
>>
quadraticSolver.m 예제를 사용하면 위의 링크에서 여러 함수를 구현하는 것이 어떻습니까? 이차 방정식을 풀 수있는 함수가 있고 사각형의 면적을 계산하는 또 다른 함수를 추가하고 싶습니다. 다른 기능을 구현하고 값을 테스트 파일에 전달하려고합니다. –
@vinaykv 무엇? 방금하는 방법을 보여 주었고 올바른 방법을 결정하는 데 필요한 링크를 보여주었습니다. 예제에서'test_one'과'test_two'는 두 가지 다른 테스트 함수입니다. – Suever
@vinaykv 아직도 혼란스러워하는 부분은 무엇입니까? – Suever