Java 如何定制Junit';s的测试用例调用功能

Java 如何定制Junit';s的测试用例调用功能,java,selenium,junit,Java,Selenium,Junit,我不希望Junit按顺序调用我的测试方法/selenium测试用例。但是我希望执行特定的测试用例,或者根据需要调用它 示例代码: import org.junit.After; import org.junit.Before; import org.junit.Test; import com.thoughtworks.selenium.DefaultSelenium; import com.thoughtworks.selenium.Selenium; public class demo

我不希望Junit按顺序调用我的测试方法/selenium测试用例。但是我希望执行特定的测试用例,或者根据需要调用它

示例代码:

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.thoughtworks.selenium.DefaultSelenium;
import com.thoughtworks.selenium.Selenium;


public class demo2 {
    Selenium selenium;

    @Before
    public void setUp() throws Exception {
        selenium = new DefaultSelenium("localhost", 4444, "*firefox", "http://www.google.co.in/");
        selenium.start();
        selenium.setTimeout("6000");
    }

    @Test
    public void test_3() throws Exception {
        selenium.open("/");
        selenium.type("q", "3");
    }
    @Test
    public void test_4() throws Exception {
        selenium.open("/");
        selenium.type("q", "4");
    }

    @After
    public void tearDown() throws Exception {
            selenium.stop();
    }
}
注意


我想要方法测试3,测试4。。。。应根据条件进行调用。

TestNG允许通过@dependsOnMethods注释进行此操作

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.thoughtworks.selenium.DefaultSelenium;
import com.thoughtworks.selenium.Selenium;


public class demo2 {
    Selenium selenium;

    @Before
    public void setUp() throws Exception {
        selenium = new DefaultSelenium("localhost", 4444, "*firefox", "http://www.google.co.in/");
        selenium.start();
        selenium.setTimeout("6000");
    }

    @Test
    public void test() throws Exception {
        if(<condition1>){
          method1(selenium);
        }  
        if(<condition2>){
          method2(selenium);
        }  
        if(<condition3>){
          method3(selenium);
        }  
        if(<condition4>){
          method4(selenium);
        }  

    }

    public static void method1(Selenium selenium) 
    throws Exception {
        selenium.open("/");
        selenium.type("q", "1");
    }

    public static void method2(Selenium selenium) 
    throws Exception {
        selenium.open("/");
        selenium.type("q", "2");
    }

    public static void method3(Selenium selenium) 
    throws Exception {
        selenium.open("/");
        selenium.type("q", "3");
    }

    public static void method4(Selenium selenium) 
    throws Exception {
        selenium.open("/");
        selenium.type("q", "4");
    }

    @After
    public void tearDown() throws Exception {
            selenium.stop();
    }
}

如果您一直使用JUnit,那么就编写自己的RunsWith,您可以根据需要使用它添加相同或类似的功能


这里可以看到一个很好的例子:

TestNG通过@dependsOnMethods注释允许这样做

如果您一直使用JUnit,那么就编写自己的RunsWith,您可以根据需要使用它添加相同或类似的功能

这里有一个很好的例子:

您可以使用

从文档:

失败的假设并不意味着代码被破坏,而是 测试没有提供有用的信息。默认的JUnit运行程序处理 忽略假设失败的测试。自定义跑步者可能会表现出色 不一样

你可以用

从文档:

失败的假设并不意味着代码被破坏,而是 测试没有提供有用的信息。默认的JUnit运行程序处理 忽略假设失败的测试。自定义跑步者可能会表现出色 不一样


您可以使用JUnit中的
假定
类。您可以在中阅读更多信息以了解用法。

您可以使用JUnit中的
假定
类。您可以在中阅读更多内容以供使用。

不必编写不同的@test,您可以将这些测试作为普通java方法编写,并且只编写一个测试

在该测试中,您可以根据某些条件调用任何方法

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.thoughtworks.selenium.DefaultSelenium;
import com.thoughtworks.selenium.Selenium;


public class demo2 {
    Selenium selenium;

    @Before
    public void setUp() throws Exception {
        selenium = new DefaultSelenium("localhost", 4444, "*firefox", "http://www.google.co.in/");
        selenium.start();
        selenium.setTimeout("6000");
    }

    @Test
    public void test() throws Exception {
        if(<condition1>){
          method1(selenium);
        }  
        if(<condition2>){
          method2(selenium);
        }  
        if(<condition3>){
          method3(selenium);
        }  
        if(<condition4>){
          method4(selenium);
        }  

    }

    public static void method1(Selenium selenium) 
    throws Exception {
        selenium.open("/");
        selenium.type("q", "1");
    }

    public static void method2(Selenium selenium) 
    throws Exception {
        selenium.open("/");
        selenium.type("q", "2");
    }

    public static void method3(Selenium selenium) 
    throws Exception {
        selenium.open("/");
        selenium.type("q", "3");
    }

    public static void method4(Selenium selenium) 
    throws Exception {
        selenium.open("/");
        selenium.type("q", "4");
    }

    @After
    public void tearDown() throws Exception {
            selenium.stop();
    }
}
import org.junit.After;
导入org.junit.Before;
导入org.junit.Test;
导入com.thoughtworks.selenium.DefaultSelenium;
导入com.thoughtworks.selenium.selenium;
公开课演示2{
硒;
@以前
public void setUp()引发异常{
selenium=newdefaultselenium(“localhost”,4444,“*firefox”,”http://www.google.co.in/");
selenium.start();
selenium.setTimeout(“6000”);
}
@试验
public void test()引发异常{
if(){
方法1(硒);
}  
if(){
方法2(硒);
}  
if(){
方法3(硒);
}  
if(){
方法4(硒);
}  
}
公共静态无效方法1(硒)
抛出异常{
硒。开(“/”);
硒。类型(“q”、“1”);
}
公共静态无效方法2(硒)
抛出异常{
硒。开(“/”);
硒。类型(“q”、“2”);
}
公共静态无效方法3(硒)
抛出异常{
硒。开(“/”);
硒。类型(“q”、“3”);
}
公共静态无效方法4(硒)
抛出异常{
硒。开(“/”);
硒。类型(“q”、“4”);
}
@之后
public void tearDown()引发异常{
seenium.stop();
}
}

不用编写不同的@test,您可以将这些测试作为普通java方法编写,并且只编写一个测试

在该测试中,您可以根据某些条件调用任何方法

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.thoughtworks.selenium.DefaultSelenium;
import com.thoughtworks.selenium.Selenium;


public class demo2 {
    Selenium selenium;

    @Before
    public void setUp() throws Exception {
        selenium = new DefaultSelenium("localhost", 4444, "*firefox", "http://www.google.co.in/");
        selenium.start();
        selenium.setTimeout("6000");
    }

    @Test
    public void test() throws Exception {
        if(<condition1>){
          method1(selenium);
        }  
        if(<condition2>){
          method2(selenium);
        }  
        if(<condition3>){
          method3(selenium);
        }  
        if(<condition4>){
          method4(selenium);
        }  

    }

    public static void method1(Selenium selenium) 
    throws Exception {
        selenium.open("/");
        selenium.type("q", "1");
    }

    public static void method2(Selenium selenium) 
    throws Exception {
        selenium.open("/");
        selenium.type("q", "2");
    }

    public static void method3(Selenium selenium) 
    throws Exception {
        selenium.open("/");
        selenium.type("q", "3");
    }

    public static void method4(Selenium selenium) 
    throws Exception {
        selenium.open("/");
        selenium.type("q", "4");
    }

    @After
    public void tearDown() throws Exception {
            selenium.stop();
    }
}
import org.junit.After;
导入org.junit.Before;
导入org.junit.Test;
导入com.thoughtworks.selenium.DefaultSelenium;
导入com.thoughtworks.selenium.selenium;
公开课演示2{
硒;
@以前
public void setUp()引发异常{
selenium=newdefaultselenium(“localhost”,4444,“*firefox”,”http://www.google.co.in/");
selenium.start();
selenium.setTimeout(“6000”);
}
@试验
public void test()引发异常{
if(){
方法1(硒);
}  
if(){
方法2(硒);
}  
if(){
方法3(硒);
}  
if(){
方法4(硒);
}  
}
公共静态无效方法1(硒)
抛出异常{
硒。开(“/”);
硒。类型(“q”、“1”);
}
公共静态无效方法2(硒)
抛出异常{
硒。开(“/”);
硒。类型(“q”、“2”);
}
公共静态无效方法3(硒)
抛出异常{
硒。开(“/”);
硒。类型(“q”、“3”);
}
公共静态无效方法4(硒)
抛出异常{
硒。开(“/”);
硒。类型(“q”、“4”);
}
@之后
public void tearDown()引发异常{
seenium.stop();
}
}