English 中文(简体)
具有沃伊德回归价值的职能日元
原标题:JUnit for Functions with Void Return Values

我先处理 Java申请,我必须利用Junnit进行测试。 我正在学习。 到目前为止,我认为这是有益的,特别是在与Eclipse Junnit plugin同时使用的时候。

在玩弄一环,我制定了一种连贯一致的方法,为没有回报价值的职能进行单位测试。 我想在这里谈谈这个问题,并请其他人发表意见。 你们是否提出了改进建议或实现同一目标的其他办法?

www.un.org/Depts/DGACM/index_spanish.htm 共同回返价值

首先,有点数字用于储存代表测试结果的价值。

public enum UnitTestReturnValues
{
    noException,
    unexpectedException
    // etc...
}

<>一般标准>

请允许我说,正在起草一个单位测试,以便:

public class SomeClass
{
    public void targetFunction (int x, int y)
    {
        // ...
    }
}

日元测试班将设立:

import junit.framework.TestCase;
public class TestSomeClass extends TestCase
{
    // ...
}

在这一类别中,我设立了一个功能,用于对目标功能进行测试的每一个呼吁。 它收集了所有的例外情况,并传达了基于结果的信息。 例如:

public class TestSomeClass extends TestCase
{
    private UnitTestReturnValues callTargetFunction (int x, int y)
    {
        UnitTestReturnValues outcome = UnitTestReturnValues.noException;
        SomeClass testObj = new SomeClass ();
        try
        {
            testObj.targetFunction (x, y);
        }
        catch (Exception e)
        {
            UnitTestReturnValues.unexpectedException;
        }
        return outcome;
    }
}

http://www.ohchr.org。

日美特所要求的职能首先以职能名称为“测试”的较低类别,在第一次失败的说法中失败。 为了对上述目标功能进行多次测试,将写成:

public class TestSomeClass extends TestCase
{
    public void testTargetFunctionNegatives ()
    {
        assertEquals (
            callTargetFunction (-1, -1),
            UnitTestReturnValues.noException);
    }

    public void testTargetFunctionZeros ()
    {
        assertEquals (
            callTargetFunction (0, 0),
            UnitTestReturnValues.noException);
    }

    // and so on...
}

请让我知道,你是否有任何建议或改进。 考虑到我正在学习如何使用日志,因此,我确信,现有工具可能会使这一进程更加容易。 感谢!

最佳回答

确实,如果你正在使用第3号特赦令,而且你正在测试是否以某种方式推翻了某一个特例,那么,你将需要使用像你上文所定义的那种catch鱼模式。

然而:

(1) 我辩称,在检查例外情况时,检验一种无效的回报价值的方法还有许多余地:这是你对(假定会变)依赖的依赖性发出正确呼吁的方法;当这一类别以不同情况或不同程度的依附条件开始时,这种做法是不同的。 通过总结对这一方法的所有呼吁,你很难改变你检验的其他方面。

我也普遍反对增加法典和增加复杂性,如果可以避免的话;我认为,在检查例外情况时,它不必在某种检验中尝试/捕获物。

2) 转到Junnit 4! 便于检查预期的例外情况:

@Test(expected=IndexOutOfBoundsException.class)
public void testIndexOutOfBoundsException() {
    ArrayList emptyList = new ArrayList();
    Object o = emptyList.get(0);
}
问题回答

如果您有这种可能性,你应升至Junnit 4.x。

之后,你的第一个例子可以改写如下:

@Test(expected=RuntimeException.class)
public void testTargetFunction() {
   testObj.targetFunction (x, y);
}

这里的好处是,你可以删除<条码>私人单位。 价值指指标功能(int x, int y)方法,并使用为支持预期的例外而建造的Junnit s。

你们也应检验具体的例外情况。

期望你们重新落实大多数日本人: 总的来说,你不需要这样做。 你只是说你想要说和比较结果的职能。 如果日本放弃一个例外,那么日本特尼特将赶上你们,否则就会失败。 如果你希望有例外情况,你可以使用JUSG4号公告,也可以使用以下方式:

public void testThrows()
{
    try {
        obj.DoSth(); //this should throw MyException
        assertFail("Expected exception");
    } catch (MyException e) {
        //assert the message etc
    }
}

如果第DoSth(Sth) ob倒不同的例外,Junnit将失败。

总而言之,恐怕我相信,你的做法是令人厌恶的。

如果我错,请更正。 我从规定的法典中理解,只有在执行职务时有例外的情况下,才能重新检查。 但是,如果所谓“工程”功能正确,除非发生错误时终止的唯一途径是例外,否则你实际上没有核实。 我建议进行更多的试验,如:

public void testTargetFunctionSomeValue()  {
  int someValue = 0;
  callTargetFunction(someValue, someValue);
  assertTrue(verifyTargetFunction(someValue, someValue));
}

public boolean verifyTargetFucntion(int someValue, int someValue) {
 // verify that execution of targetFunction made expected changes.
  . . . . . 
}

如果要求指定目标功能会带来预期的变化,那么核实基准功能就会受到严厉的检查——请通过恢复真实或虚假的方式向数据库表汇报。

希望会有所帮助。

Cheers, Markus





相关问题
run unit tests and coverage in certain python structure

I have some funny noob problem. I try to run unit tests from commandline: H:PROpyEstimator>python src estpython est_power_estimator.py Traceback (most recent call last): File "src est...

How to unit-test an enterprise symfony project?

I´m working on a huge project at my work. We have about 200 database tables, accordingly a huge number of Models, Actions and so on. How should I begin to write tests for this? My biggest problem ...

Code Coverage Tools & Visual Studio 2008 Pro

Just wondering what people are using for code coverage tools when using MS Visual Studio 2008 Pro. We are using the built-in MS test project and unit testing tool (the one that come pre-installed ...

Unit testing. File structure

I have a C++ legacy codebase with 10-15 applications, all sharing several components. While setting up unittests for both shared components and for applications themselves, I was wondering if there ...

Unit Testing .NET 3.5 projects using MStest in VS2010

There s a bug/feature in Visual Studio 2010 where you can t create a unit test project with the 2.0 CLR. https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=483891&wa=...

Unit Test for Exceptions Message

Is there a simple (Attribute-driven) way to have the following test fail on the message of the exception. [TestMethod()] [ExpectedException(typeof(ArgumentException))] public void ExceptionTestTest() ...

热门标签