2016-05-24 2 views
2

С помощью JUnitParameter для тестирования метода у меня есть исключение. Мой код похож на много, например, на JUnitParameter:Метод исключения junitparameter не должен иметь никакого параметра

private Object parametersForTestSetDistanceFormated() { 
    return new Object[][]{  
     {100, "_1,__ km"}, 
     {100, "1_,__ km"}, 
     {1100, "11,__ km"}, 
     {110, "1_,1_ km"}, 
     {111, "1_,11 km"}}; 
} 
/** 
* Test of setDistanceFormated method, of class ClientFormated. 
*/ 
@Test 
@Parameters 
public void testSetDistanceFormated(final int exptDist, final String distFormated) { 
    System.out.println("setDistanceFormated"); 
    ClientFormated instance = new ClientFormated();    

    instance.setDistanceFormated(distFormated); 
    assertEquals(exptDist, (long) instance.getDistance()); 
} 

, а затем я получаю следующее исключение:

java.lang.RuntimeException: java.lang.Exception: Method testSetDistanceFormated should have no parameters 
    at junitparams.JUnitParamsRunner.verifyMethodCanBeRunByStandardRunner(JUnitParamsRunner.java:429) 
    at junitparams.JUnitParamsRunner.runChild(JUnitParamsRunner.java:420) 
    at junitparams.JUnitParamsRunner.runChild(JUnitParamsRunner.java:386) 
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 
    at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164) 
    at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110) 
    at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175) 
    at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107) 
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68) 
Caused by: java.lang.Exception: Method testSetDistanceFormated should have no parameters 
    at org.junit.runners.model.FrameworkMethod.validatePublicVoidNoArg(FrameworkMethod.java:76) 
    at junitparams.JUnitParamsRunner.verifyMethodCanBeRunByStandardRunner(JUnitParamsRunner.java:427) 
    ... 20 more 

я не нашел, связанные с веб ...

Мои вся Classe:

import com.entities.Client; 
import junitparams.JUnitParamsRunner; 
import org.junit.Test; 
import static org.junit.Assert.*; 
import org.junit.runner.RunWith; 
import org.junit.runners.Parameterized.Parameters; 

@RunWith(JUnitParamsRunner.class) 
public class ClientFormatedTest { 

private Object parametersForTestSetDistanceFormated() { 
    return new Object[][]{  
     {100, "_1,__ km"}, 
     {100, "1_,__ km"}, 
     {1100, "11,__ km"}, 
     {110, "1_,1_ km"}, 
     {111, "1_,11 km"}}; 
} 

/** 
* Test of setDistanceFormated method, of class ClientFormated. 
*/ 
@Test 
@Parameters 
public void testSetDistanceFormated(final int exptDist, final String distFormated) { 
    System.out.println("setDistanceFormated"); 
    ClientFormated instance = new ClientFormated();    

    instance.setDistanceFormated(distFormated); 
    assertEquals(exptDist, (long) instance.getDistance()); 
} 
+1

Вы уверены, что используете правильную аннотацию '@ Parameters'? –

+1

Вставьте весь класс вместе с импортом. У вас есть аннотация @RunWith (JUniParamsRunner.class)? –

+0

Да, как вы можете видеть, у меня есть @RunWith (JUniParamsRunner.class) –

ответ

0

импорта должны быть обновлены, как:

import com.entities.Client; 
import junitparams.JUnitParamsRunner; 
import junitparams.Parameters; 
import static org.junit.Assert.*; 
import org.junit.Test; 
import org.junit.runner.RunWith; 

Сейчас он работает

4

Вы используете неправильный импорт для @Parameters - она ​​должна быть junitparams.Parameters, не org.junit.runners.Parameterized.Parameters

+0

Да, я нашел в то время, чем вы. спасибо –

2

Для кого-то, кто пришел сюда из-за той же ошибки, они видят, но не с JUitParameter.

Я попал в ту же ошибку, в моем коде.

java.lang.Exception: Method assertResult() should be public 


at org.junit.runners.model.FrameworkMethod.validatePublicVoid(FrameworkMethod.java:96) 
at org.junit.runners.model.FrameworkMethod.validatePublicVoidNoArg(FrameworkMethod.java:74) 
at org.junit.runners.ParentRunner.validatePublicVoidNoArgMethods(ParentRunner.java:155) 
at org.junit.runners.BlockJUnit4ClassRunner.validateTestMethods(BlockJUnit4ClassRunner.java:208) 
at org.junit.runners.BlockJUnit4ClassRunner.validateInstanceMethods(BlockJUnit4ClassRunner.java:188) 
at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:128) 
at org.junit.runners.ParentRunner.validate(ParentRunner.java:416) 
at org.junit.runners.ParentRunner.<init>(ParentRunner.java:84) 
at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:65) 
at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:10) 
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26) 
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33) 
at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:36) 
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:49) 
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51) 
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:237) 
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:498) 
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) 

Ошибка была связана с тем, что для метода с аргументом я случайно добавил тег @Test. (Добавил его, когда я тестировал именно этот метод, а затем забыл его удалить). Дурак я. Работал отлично, когда я удалил @Test. Если вы хотите @test, то метод не должен иметь каких-либо аргументов

@Test 
void assertResult(String result) { 
    Assert.assertTrue(!"403".equals(result) && !"404".equals(result) && !"400".equals(result)); 
    Assert.assertNotNull(result); 
} 
3

Добавить @RunWith (JUnitParamsRunner.class) аннотацию выше класса в

@RunWith(JUnitParamsRunner.class) 
public class TestClass { 

Кроме того, необходимо импортировать

import junitparams.JUnitParamsRunner;