Ric*_*ket 113 java junit unit-testing
我正在学习测试驱动开发的概念,通过阅读我之前的问题"用于学习JUnit和适当的软件工程的示例项目"的回答中推荐的Craftsman文章(单击By Topic下的Craftsman).到目前为止我喜欢它!
但现在我想坐下来亲自尝试一下.我有一个问题,我希望只需要一个简单的答案.
您如何组织JUnit测试类和实际代码?我主要谈论的是包结构,但任何其他注意事项也都会有所帮助.
您是否将测试类放在org.myname.project.test.*和org.myname.project中的普通代码中.*?您是否将测试类与正常类一起放在一起?您更喜欢使用Test而不是后缀来为类名添加前缀吗?
我知道这似乎是我不应该这么快就担心的事情,但我是一个非常以组织为中心的人.我几乎是那种花费更多时间找出方法来跟踪要做什么的人,而不是实际完成任务.
我有一个项目,目前整齐划分为包,但项目变得一团糟.我没有尝试重构所有内容并编写测试,而是首先尝试新的测试.但首先我需要知道我的测试在哪里.
编辑:我完全忘记了Maven,但似乎大多数人都在使用它!在过去,我有一个特定的用例,Maven完全打破了我,但Ant给了我所需的灵活性,所以我最终依附于Ant,但我想也许我只是采取了错误的方法.我想我会再给Maven一个尝试,因为听起来它会很好地适应测试驱动的开发.
Pét*_*rök 148
我更喜欢将测试类放在与他们测试的项目类相同的包中,但是在不同的物理目录中,例如:
myproject/src/com/foo/Bar.java
myproject/test/com/foo/BarTest.java
Run Code Online (Sandbox Code Playgroud)
在Maven项目中,它看起来像这样:
myproject/src/main/java/com/foo/Bar.java
myproject/src/test/java/com/foo/BarTest.java
Run Code Online (Sandbox Code Playgroud)
这里的要点是我的测试类可以访问(并测试!)包范围类和成员.
如上例所示,我的测试类具有测试类的名称加上Test
后缀.这有助于快速找到它们 - 尝试在几百个测试类中搜索并不是很有趣,每个测试类的名称都以Test
... 开头.
受@ Ricket评论启发的更新:这种方式测试类(通常)在他们的测试伙伴之后立即显示在项目名称的类名列表中.(有趣的是,我从一天中受益,没有有意识地意识到......)
Update2:很多开发人员(包括我自己)都喜欢Maven,但似乎至少有很多人没有.恕我直言,它对"主流"Java项目非常有用(我会将约90%的项目纳入此类别......但其他10%仍然是相当大的少数项目).如果可以接受Maven惯例,它很容易使用; 但如果没有,它会让生活变得悲惨.对于许多在Ant上社交的人来说,Maven似乎很难理解,因为它显然需要一种非常不同的思维方式.(我自己,从未使用过Ant,无法比较两者.)有一件事是肯定的:它使单元(和集成)测试成为流程中自然的,一流的步骤,这有助于开发人员采用这种基本实践.
Chr*_*isH 15
我将测试类放在与测试相同的包中,但是放在不同的源文件夹或项目中.以这种方式组织我的测试代码允许我轻松地单独编译和打包它,以便生产jar文件不包含测试代码.它还允许测试代码访问包私有字段和方法.
Mar*_*tin 12
我用Maven.Maven推出的结构是: -
src/main/java/org/myname/project/MyClass.java
src/test/java/org/myname/project/TestMyClass.java
Run Code Online (Sandbox Code Playgroud)
即,测试类的名称前面的Test测试类与主测试的并行目录结构.
将测试类放在同一个包中(不一定是目录)的一个优点是,您可以利用包范围方法来检查或注入模拟测试对象.
归档时间: |
|
查看次数: |
54613 次 |
最近记录: |