Parameters for Matlab.unittest.TestCase

조회 수: 7 (최근 30일)
Chris
Chris 2015년 1월 16일
답변: Ricardo Krause 2019년 2월 21일
I would like to use the framework of TestCase/TestSuite/TestRunner. I want to do the same tests for different test cases. For actually implementing the tests I simple wrote a class derived from "TestCase" where the "methods (Test)" holds the implementation. I am instancing the TestSuite by "fromFolder" where my TestCase-class is located in order to be able to use it for different test cases with the same file structure. That works out fine.
Now I have to problem of transferring parameters to the TestCase-class in order to be able to use them in the setup process, i.e. different setup parameters for the different test cases.
The only solution I could come up with is writing control file to be read in the ClassSetupMethod - but that's not favourable in this situation. Is there a possibility of passing parameters on to the actual TestCase used in the TestRunner, e.g. when creating the instance of the TestCase? I mean online, i.e. different parameters for every run of the TestSuite, and not fixed Parameters like when using "properties (ClassSetupParameter)".
PS: I am using R2013a.
  댓글 수: 2
Andy Campbell
Andy Campbell 2015년 1월 16일
Couple questions. How many parameters are we talking about? Are the parameters known ahead of time or are they "dynamic" in some way? Also, is this for production use cases or for simple experimental cases?
Chris
Chris 2015년 1월 21일
There are a limited number of parameters (about 3 to 5) but the parameters are dynamic and not known in advance. Since this should be used for daily overnight tests I have to find an automated way to deal with changes.

댓글을 달려면 로그인하십시오.

답변 (2개)

David Hruska
David Hruska 2015년 2월 10일
If you have access to R2014a or later, parameterized testing could still be an option. Parameter values are often hard-coded but they need not be. You could, for example, call a local function to determine the parameterization of your test:
classdef exampleTest < matlab.unittest.TestCase
properties (ClassSetupParameter)
Param = getParameterValues;
end
% Reset of the test code
end
function p = getParameterValues
% Determine paramterization
p = <whatever>
end
In this example, the "getParameterValues" function gets called when the class is parsed -- typically the first time you create the suite in a MATLAB session. The function won't get called again (and therefore you won't get a different parameterization) until you clear the class or start a new MATLAB session. If you can live with these limitations, parameterized testing might be worth a look.
  댓글 수: 1
Aditya
Aditya 2016년 11월 9일
편집: Aditya 2016년 11월 9일
I had a similar issue (using 2016a), in which I wanted to have the parameterization for the test suite to come from external data. I used your suggestion and it seems to work. Great idea.

댓글을 달려면 로그인하십시오.


Ricardo Krause
Ricardo Krause 2019년 2월 21일
Hi @all,
in relation to this topic I've been thinking about the use of an IoC container which I like to use for different test cases in same tests.
I tried to setup my container as singleton in the TestRunner, but I struggle to make them available in my test classes.
Has anyone had any experience with this?
BR

카테고리

Help CenterFile Exchange에서 Extend Testing Frameworks에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by