Questions tagged «junit»

流行的Java和Scala单元测试框架。最新版本的JUnit 5支持基于注释的丰富测试和参数化测试。考虑与Java或Scala标记结合使用以指示您的用例。

6
如何在Spark 2.0+中编写单元测试?
我一直在尝试找到一种合理的方法来SparkSession使用JUnit测试框架进行测试。尽管似乎有很好的示例SparkContext,SparkSession但即使在spark-testing-base的内部多个地方使用了相应的示例,我也无法弄清楚该示例如何工作。如果不是真正正确的方法,我很乐意尝试一种不使用基于火花测试的解决方案。 简单的测试用例(带有的完整MWE项目build.sbt): import com.holdenkarau.spark.testing.DataFrameSuiteBase import org.junit.Test import org.scalatest.FunSuite import org.apache.spark.sql.SparkSession class SessionTest extends FunSuite with DataFrameSuiteBase { implicit val sparkImpl: SparkSession = spark @Test def simpleLookupTest { val homeDir = System.getProperty("user.home") val training = spark.read.format("libsvm") .load(s"$homeDir\\Documents\\GitHub\\sample_linear_regression_data.txt") println("completed simple lookup test") } } 用JUnit运行它的结果是在负载线处有一个NPE: java.lang.NullPointerException at SessionTest.simpleLookupTest(SessionTest.scala:16) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at …


5
将测试文件导入JUnit的简单方法
有人可以建议一种简单的方法来在junit测试类中获取对文件的引用作为String / InputStream / File / etc类型对象吗?显然,我可以将文件(在这种情况下为xml)粘贴为巨型String或将其作为文件读取,但是是否有像这样的Junit专用快捷方式? public class MyTestClass{ @Resource(path="something.xml") File myTestFile; @Test public void toSomeTest(){ ... } }


2
Hamcrest的多个正确结果(是否有匹配器?)
我对匹配者来说还比较陌生。我正在和JUnit一起使用hamcrest玩弄,我有点喜欢。 有没有办法指出多个选择之一是正确的? 就像是 assertThat( result, is( either( 1, or( 2, or( 3 ) ) ) ) ) //does not work in hamcrest 我正在测试的方法返回集合的一个元素。该列表可能包含多个候选。我当前的实现返回第一击,但这不是必须的。如果返回任何可能的候选人,我希望我的测试用例能够成功。您将如何用Java表达这一点? (我接受hamcrest替代方案)
76 java  junit  hamcrest  matcher 


5
时间相关的单元测试
我需要测试一个函数,该函数的结果将取决于当前时间(使用Joda time的时间isBeforeNow())。 public boolean isAvailable() { return (this.someDate.isBeforeNow()); } 是否可以使用(例如使用Mockito)存根/模拟系统时间,以便我可以可靠地测试功能?
75 java  junit 


12
@Mock注释后,模拟实例为null
我尝试运行此测试: @Mock IRoutingObjHttpClient routingClientMock; @Mock IRoutingResponseRepository routingResponseRepositoryMock; @Test public void testSendRoutingRequest() throws Exception { CompleteRoutingResponse completeRoutingResponse = new CompleteRoutingResponse(); completeRoutingResponse.regression_latencyMillis = 500L; Mockito.when(routingClientMock.sendRoutingRequest(any(RoutingRequest.class))).thenReturn(completeRoutingResponse); RoutingObjHttpClientWithReRun routingObjHttpClientWithReRun = new RoutingObjHttpClientWithReRun (routingClientMock, routingResponseRepositoryMock); ... } 但我得到NullPointerException为: Mockito.when(routingClientMock. 我想念什么?

5
运行单元测试时出现IntelliJ错误:无法找到或加载主类$ {surefireArgLine}
在IntelliJ中运行单元测试时,出现以下错误:错误:找不到或加载主类$ {surefireArgLine}。我正在使用maven,在pom.xml中,我有: <properties> ... <surefire.argLine /> </properties> <build> <plugins> <plugin> <groupId>com.mysema.maven</groupId> <artifactId>apt-maven-plugin</artifactId> <version>1.1.1</version> <executions> <execution> <goals> <goal>process</goal> </goals> <configuration> <outputDirectory>target/generated-sources/java</outputDirectory> <processor>com.mysema.query.apt.jpa.JPAAnnotationProcessor</processor> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.17</version> <configuration> <!--Sets the VM argument line used when unit tests are run.--> <argLine>${surefire.argLine}</argLine> </configuration> </plugin> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.7.1.201405082137</version> <executions> <!-- …

7
使用Mockito通过new()调用测试类
我有一个旧类,其中包含一个new()调用以实例化LoginContext(): public class TestedClass { public LoginContext login(String user, String password) { LoginContext lc = new LoginContext("login", callbackHandler); } } 我想使用Mockito测试该类以模拟LoginContext,因为它要求在实例化之前设置JAAS安全性,但是我不确定如何在不更改login()方法以外部化LoginContext的情况下进行此操作。是否可以使用Mockito模拟LoginContext类?

4
Mockito在例外Junit 4.10之后进行验证
我正在测试具有预期异常的方法。我还需要在引发异常后验证是否在某个模拟对象上调用了一些清理代码,但看起来该验证已被忽略。这是代码。我正在使用JunitExpectedException Rule验证预期的异常。 @Rule public ExpectedException expectedEx = ExpectedException.none(); @Test public void testExpectedException() { MockedObject mockObj = mock(MockedObj.class); MySubject subject = new MySubject(mockedObj); expectedEx.expect(MyException.class); expectedEx.expectMessage("My exception message."); subject.someMethodThrowingException(); verify(mockObj). someCleanup(eq(...)); } 似乎verify完全被忽略了。无论我采用什么方法verify,我的测试都通过了,这不是我想要的。 知道为什么会这样吗?

5
并发JUnit测试
我有一个大型的JUnit测试套件,出于两个原因,我想在其中同时运行所有测试: 利用多个内核来更快地运行整个测试套件 希望检测到由于非线程安全的全局对象而导致的一些错误 我知道这将迫使我重构一些代码以使其具有线程安全性,但是我认为这是一件好事:-) 使JUnit同时运行所有测试的最佳方法是什么?

6
如何在JUnit 4中运行属于某个类别的所有测试
JUnit 4.8包含一个很好的新功能,称为“类别”,使您可以将某些类型的测试组合在一起。这非常有用,例如为慢速和快速测试分别进行测试。我知道JUnit 4.8发行说明中提到的内容,但想知道我如何才能实际运行带有特定类别注释的所有测试。 JUnit 4.8发行说明显示了一个示例套件定义,其中SuiteClasses批注从特定类别中选择要运行的测试,如下所示: @RunWith(Categories.class) @IncludeCategory(SlowTests.class) @SuiteClasses( { A.class, B.class }) // Note that Categories is a kind of Suite public class SlowTestSuite { // Will run A.b and B.c, but not A.a } 有谁知道我可以如何在SlowTests类别中运行所有测试?看来您必须具有SuiteClasses批注...

8
如何在Maven中按类别运行JUnit测试?
使用JUnit 4.8和新的@Category注释,是否可以选择类别的子集以与Maven的Surefire插件一起运行? 例如,我有: @Test public void a() { } @Category(SlowTests.class) @Test public void b() { } 我想按如下方式运行所有非慢速测试:(请注意,-Dtest.categories由我组成...)。 mvn test -Dtest.categories=!SlowTests // run non-slow tests mvn test -Dtest.categories=SlowTests // run only slow tests mvn test -Dtest.categories=SlowTests,FastTests // run only slow tests and fast tests mvn test // run all tests, including …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.