Java 没有不可变对象的Selenium/JUnit中的不可变映射错误

Java 没有不可变对象的Selenium/JUnit中的不可变映射错误,java,selenium-webdriver,intellij-idea,junit,guava,Java,Selenium Webdriver,Intellij Idea,Junit,Guava,我在Intellij中使用Java/Selenium/JUnit/ANT,当我运行build.xml文件并将其发送到测试运行程序时,我开始得到不可变的映射错误。我没有任何不变的对象 import org.openqa.selenium.By; import org.openqa.selenium.Capabilities; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org

我在Intellij中使用Java/Selenium/JUnit/ANT,当我运行build.xml文件并将其发送到测试运行程序时,我开始得到不可变的映射错误。我没有任何不变的对象

import org.openqa.selenium.By;
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.edge.EdgeDriverService;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
import java.io.IOException;

public class Auth {

public WebDriver driver;
public WebDriverWait wait;

public static void main(String[] args){
    System.out.println("Let's Go.");
}

public boolean doSetup() throws IOException {

    System.setProperty("webdriver.edge.driver", "C:/Path/to/MicrosoftWebDriver.exe" );
    driver = new EdgeDriver();
    Capabilities cap = ((RemoteWebDriver) driver).getCapabilities();
    String browserName = cap.getBrowserName().toLowerCase();
    //System.out.println(browserName);
      if(browserName.equals("microsoftedge")) {
      }
    return true;
}
然后在我的测试中,它被称为@Before,驱动程序在@After中再次被调用

@Before
public void signIn() throws Exception{
    auth.doSetup();
}

@After
public void tearDown() throws Exception {
    auth.driver.quit();
}
这会引发以下错误:

  <testcase classname="adminTests.adminWorkspaceMenu" name="adminWorkspace" time="0.025">
<error message="com/google/common/collect/ImmutableMap" type="java.lang.NoClassDefFoundError">java.lang.NoClassDefFoundError: com/google/common/collect/ImmutableMap
at org.openqa.selenium.remote.service.DriverService$Builder.&lt;init&gt;(DriverService.java:249)
at org.openqa.selenium.edge.EdgeDriverService$Builder.&lt;init&gt;(EdgeDriverService.java:72)
at org.openqa.selenium.edge.EdgeDriverService.createDefaultService(EdgeDriverService.java:68)
at org.openqa.selenium.edge.EdgeDriver.&lt;init&gt;(EdgeDriver.java:96)
at userTests.Auth.doSetup(Auth.java:33)
at adminTests.adminWorkspaceMenu.signIn(adminWorkspaceMenu.java:19)
Caused by: java.lang.ClassNotFoundException: com.google.common.collect.ImmutableMap
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
</error>
<error type="java.lang.NullPointerException">java.lang.NullPointerException
at adminTests.adminWorkspaceMenu.tearDown(adminWorkspaceMenu.java:39)
</error>
</testcase>

java.lang.NoClassDefFoundError:com/google/common/collect/ImmutableMap
位于org.openqa.selenium.remote.service.DriverService$Builder.init(DriverService.java:249)
位于org.openqa.selenium.edge.EdgeDriverService$Builder.init(EdgeDriverService.java:72)
位于org.openqa.selenium.edge.EdgeDriverService.createDefaultService(EdgeDriverService.java:68)
位于org.openqa.selenium.edge.EdgeDriver.init(EdgeDriver.java:96)
在userTests.Auth.doSetup(Auth.java:33)
在adminTests.adminWorkspaceMenu.signIn(adminWorkspaceMenu.java:19)
原因:java.lang.ClassNotFoundException:com.google.common.collect.ImmutableMap
位于java.net.URLClassLoader.findClass(URLClassLoader.java:381)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:424)
位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:357)
java.lang.NullPointerException
在adminTests.adminWorkspaceMenu.tearDown(adminWorkspaceMenu.java:39)

我想要一个解决方法来避免这个错误,我最初在Eclipse中编写这个项目时没有遇到过这个问题,但是由于各种原因,我不得不切换到Intellij,现在我遇到了这个问题。

ImmutableMap类来自Google Collections库。尝试将此依赖项添加到项目中:

Maven(添加到pom.xml依赖项部分):


将此添加到您的pom中:

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>23.0</version>
</dependency>

番石榴
番石榴
23

查看您的错误。这是Selenium库中的ClassNotFoundException。它告诉您缺少对某个Google库的依赖,该库包含一个名为
ImmutableMap
的类。将该依赖项添加到类路径中。我没有使用Maven。只有蚂蚁。所以,这些并没有回答我的问题。这是一个没有实际意义的问题,因为我刚刚放弃,转而使用Maven,这需要大量的额外工作。未来的某个人会很感激蚂蚁问题的答案。谢谢,但请看我对马克的回答。
testCompile group: 'com.google.collections', name: 'google-collections', version: '1.0'
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>23.0</version>
</dependency>