也许我的问题是一个新手,但我不能真正理解我将使用junit的情况?
无论我是编写简单的应用程序还是更大的应用程序,我都会使用System.out语句测试它们,并且它对我来说很容易.
为什么在项目中创建带有JUnit的测试类,如果我们仍然需要调用相同的方法,检查它们返回的内容,那么我们是否需要注释所有内容?
为什么不写一个类并一次测试它System.out而不是创建Test-classes?
PS.我从未参与过我刚刚学习的大型项目.
那么目的是什么?
你如何让Jenkins执行python unittest案例?是否可以从内置unittest包中获得JUnit样式的XML输出?
我有一个集成测试套件.我有一个IntegrationTestBase课程,我的所有测试都要扩展.此基类具有@Before(public void setUp())和@After(public void tearDown())方法来建立API和DB连接.我一直在做的就是在每个测试用例中调用这两个方法并调用super.setUp()和super.tearDown().但是,如果有人忘记调用父类或者把它们放在错误的地方,并抛出一个异常,他们会忘记在最后什么超级调用此可能会出现问题.
我想要做的是在基类上创建setUp和tearDown方法final,然后添加我们自己的注释@Before和@After方法.做一些初始测试似乎总是按此顺序调用:
Base @Before
Test @Before
Test
Test @After
Base @After
Run Code Online (Sandbox Code Playgroud)
但我只是担心订单无法保证并且可能会导致问题.我环顾四周,没有看到任何关于这个问题的内容.有谁知道我能做到这一点而没有任何问题吗?
码:
public class IntegrationTestBase {
@Before
public final void setUp() { *always called 1st?* }
@After
public final void tearDown() { *always called last?* }
}
public class MyTest extends IntegrationTestBase {
@Before
public final void before() { *always called …Run Code Online (Sandbox Code Playgroud) 为什么每次我在Android Studio中创建一个新项目时,它总是会出现:
错误:(23,17)无法解决:junit:junit:4.12?
当我删除testCompile 'junit:junit:4.12'依赖项时,它不再是一个问题.
的build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "com.okedroid.myapplication"
minSdkVersion 17
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.0.1'
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试验证在DAO中调用(void)方法 - 我正在使用一个提交点,该提交点将结果列表发送到该点,重置列表并继续.假设我在列表中有4个东西,并且我的提交点为1,我希望"send"方法被调用4次.我可以通过编写来验证该方法是否被调用一次
Mockito.verify(mock).send()
它通过..但我想验证它被调用的次数.我想是的
Mockito.verify(mock.send(), times(4))
就足够了,但它说参数不正确验证.
顺便说一句,如果我 Mockito.verify(mock).send()改为 Mockito.verify(mock.send())或者 Mockito.verify((mock).send())我得到同样的错误.对此的想法?
我继承了Junit测试的负载,但是这些测试(除了大多数不工作之外)是实际单元测试和集成测试(需要外部系统,db等)的混合.
所以我试图想出一种方法来实际将它们分开,这样我就可以很好地快速运行单元测试,然后进行集成测试.
选项是......
将它们拆分为单独的目录.
移至Junit4(从v3开始)并注释类以将它们分开.
使用文件命名约定来告诉类是什么,即AdapterATest和AdapterAIntergrationTest.
3存在Eclipse可以选择"在所选项目/包或文件夹中运行所有测试"的问题.因此,只需运行集成测试就很难了.
2:冒着开发人员可能开始在单元测试类中编写集成测试的风险,它只会变得混乱.
1:似乎是最好的解决方案,但我的直觉说必须有一个更好的解决方案.
所以这就是我的问题,你如何分解集成测试和适当的单元测试?
在工作中,我们目前仍在使用JUnit 3来运行我们的测试.我们一直在考虑切换到JUnit 4进行新的测试,但我一直在关注TestNG.您对JUnit 4或TestNG有什么经验,对于大量的测试似乎更好?编写测试的灵活性对我们来说也很重要,因为我们的功能测试涵盖了广泛的方面,需要以各种方式编写才能获得结果.
旧的测试不会被重写,因为他们的工作做得很好.我希望在新测试中看到的是测试编写方式的灵活性,自然断言,分组和易于分布的测试执行.
我在junit测试中使用mockito.你怎么做一个异常发生然后断言它有(通用伪代码)
我将版本junit升级到4.11并得到:
[WARNING] [deprecation] Assert in junit.framework has been deprecated
[WARNING] [deprecation] Assert in junit.framework has been deprecated
....
Run Code Online (Sandbox Code Playgroud)
如何迁移?
我已经从JUnit3.8切换到JUnit4.4.我使用ant运行我的测试,所有测试都成功运行,但测试实用程序类失败并显示"No runnable methods"错误.我使用的模式是在测试文件夹下包含名称为*Test*的所有类.
我知道跑步者找不到任何用@Test属性注释的方法.但是它们不包含这样的注释,因为这些类不是测试.令人惊讶的是,当在eclipse中运行这些测试时,它并没有抱怨这些类.
在JUnit3.8中,它根本不是问题,因为这些实用程序类没有扩展TestCase,所以跑步者没有尝试执行它们.
我知道我可以在ant脚本中的junit目标中排除这些特定的类.但我不想在我添加的每个新实用程序类上更改构建文件.我也可以重命名课程(但是给课程好名字总是我最弱的人才:-))
这个问题有没有优雅的解决方案?