Java 执行单个测试时Eclipse和JUNIT4出现初始化错误

Java 执行单个测试时Eclipse和JUNIT4出现初始化错误,java,eclipse,junit4,eclipse-indigo,Java,Eclipse,Junit4,Eclipse Indigo,我的测试课是这样的: /** * The Class TestAddSubscriber. */ @RunWith(LabelledParameterized.class) public class TestAddSubscriber extends AbstractTestSubscriber { /** * Instantiates a new test add subscriber. *

我的测试课是这样的:

    /**
     * The Class TestAddSubscriber.
     */
    @RunWith(LabelledParameterized.class)
    public class TestAddSubscriber extends AbstractTestSubscriber {

        /**
         * Instantiates a new test add subscriber.
         * 
         * @param label
         *            the label
         * @param apiKey
         *            the api key
         * @param userKey
         *            the user key
         * @param customerId
         *            the customer id
         */
        public TestAddSubscriber(String label, String apiKey, String userKey,
                int customerId) {
            super(label, apiKey, userKey, customerId);
        }

        /**
         * @see com.contactlab.api.test.AbstractTest#setUp()
         */
        @Override
        @Before
        public void setUp() throws Exception {
            super.setUp();
        }

        /**
         * @see com.contactlab.api.test.AbstractTest#tearDown()
         */
        @Override
        @After
        public void tearDown() throws Exception {
            super.tearDown();
        }

        /**
         * Generated data.
         * 
         * @return the collection
         */
        @Parameters
        public static Collection<Object[]> generatedData() {
            return DataProvider.generatedCorrectSubscriberData();
        }

        /**
         * Test add subscriber with internal pk id case sensitive.
         * 
         * @outcome: success
         * @expected: success
         * @obtained: success
         */
        @Test
        public void testAddSubscriberWithInternalPkIdCaseSensitive() {

  /** this is the test **/

        }

    /**
    * other tests
    **/
    }

有什么地方我做错了吗?

您可以通过扩展参数化的

公共类IDECompatibleParameterized扩展参数化{
公共无效筛选器(筛选器筛选器筛选器)引发NoTestsRemainException{
超级过滤器(新过滤器分离器(过滤器));
}
/**
*在参数化测试的情况下运行单个测试会导致问题,如中所述
* http://youtrack.jetbrains.com/issue/IDEA-65966
*
*作为一种解决方法,我们将原始过滤器包装起来,然后将包装好的描述传递给它
*这将删除参数部分(请参见deParameterizedName)
*/
私有静态类过滤器Decorator扩展过滤器{
私人最终筛选代表;
专用筛选器Decorator(筛选器委托){
this.delegate=委托;
}
@凌驾
公共布尔值应运行(说明){
返回委托.shouldRun(包装(说明));
}
@凌驾
公共字符串descripe(){
返回delegate.descripe();
}
}
私有静态描述换行(描述){
字符串名称=description.getDisplayName();
字符串fixedName=deParameterizedName(名称);
描述克隆描述=
Description.createSuiteDescription(fixedName,Description.getAnnotations().toArray(新注释[0]);
对于(描述子项:Description.getChildren()){
clonedDescription.addChild(wrap(child));
}
返回克隆描述;
}
私有静态字符串deParameterizedName(字符串名称){
//每个参数命名为[0]、[1]等
if(name.startsWith(“[”)){
返回名称;
}
//将methodName[索引](类名)转换为
//方法名(类名)
int indexOfOpenBracket=name.indexOf('[');
int indexOfCloseBracket=name.indexOf(']')+1;
返回name.substring(0,indexOfOpenBracket).concat(name.substring(indexOfCloseBracket));
}
}
另一种方法是在Launch configuration中更改方法名,使参数名如
testAddSubscriberWithInternalPkIdCaseSensitive[0]

在Juno中使用JUnit 4.11和@RunWith(Parameterized.class)按预期工作(您可以右键单击+运行单个测试).但版本控制与您的设置完全不同…:-/
TestAddSubscriber.testAddSubscriberWithInternalPkIdCaseSensitive
Unrooted Tests
initializationError(org.junit.runner.manipulation.Filter)
java.lang.Exception: No tests found matching Method testAddSubscriberWithInternalPkIdCaseSensitive(com.contactlab.api.test.subscriber.TestAddSubscriber) from org.junit.internal.requests.ClassRequest@18872380
    at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:37)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:33)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestMethodReference.<init>(JUnit4TestMethodReference.java:25)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:54)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)